Skip to content

Instantly share code, notes, and snippets.

@AliYmn
Created August 18, 2017 13:54
Show Gist options
  • Save AliYmn/4db9b3e8d6ea7336542f10b03e07d7d6 to your computer and use it in GitHub Desktop.
Save AliYmn/4db9b3e8d6ea7336542f10b03e07d7d6 to your computer and use it in GitHub Desktop.
#!/usr/bin/env python
import atexit
from pyVmomi import vim, vmodl
from pyVim.connect import SmartConnect, Disconnect
import humanize
MBFACTOR = float(1 << 20)
printVM = True
printDatastore = True
printHost = True
def printHostInformation(host):
try:
summary = host.summary
stats = summary.quickStats
hardware = host.hardware
cpuUsage = stats.overallCpuUsage
memoryCapacity = hardware.memorySize
memoryCapacityInMB = hardware.memorySize/MBFACTOR
memoryUsage = float(stats.overallMemoryUsage)
freeMemoryPercentage = 100 - ((float(memoryUsage) / float(memoryCapacityInMB)) * 100)
print "--------------------------------------------------"
print "Host name: ", host.name
print "Host CPU usage: ", cpuUsage
print "Host memory capacity: ", humanize.naturalsize(memoryCapacity,
binary=True)
print "Host memory usage: ",float( memoryUsage / 1024), "GiB"
print "Free memory percentage: " + str(freeMemoryPercentage) + "%"
print "--------------------------------------------------"
except Exception as error:
print "Unable to access information for host: ", host.name
print error
pass
def printComputeResourceInformation(computeResource):
try:
hostList = computeResource.host
print "##################################################"
print "Compute resource name: ", computeResource.name
print "##################################################"
for host in hostList:
printHostInformation(host)
except Exception as error:
print "Unable to access information for compute resource: "
print error
pass
def printDatastoreInformation(datastore):
try:
summary = datastore.summary
capacity = summary.capacity
freeSpace = summary.freeSpace
uncommittedSpace = summary.uncommitted
freeSpacePercentage = (float(freeSpace) / capacity) * 100
print "##################################################"
print "Datastore name: ", summary.name
print "Capacity: ", humanize.naturalsize(capacity, binary=True)
if uncommittedSpace is not None:
provisionedSpace = (capacity - freeSpace) + uncommittedSpace
print "Provisioned space: ", humanize.naturalsize(provisionedSpace,
binary=True)
print "Free space: ", humanize.naturalsize(freeSpace, binary=True)
print "Free space percentage: " + str(freeSpacePercentage) + "%"
print "##################################################"
except Exception as error:
print "Unable to access summary for datastore: ", datastore.name
print error
pass
def printVmInformation(virtual_machine, depth=1):
maxdepth = 10
if hasattr(virtual_machine, 'childEntity'):
if depth > maxdepth:
return
vmList = virtual_machine.childEntity
for c in vmList:
printVmInformation(c, depth + 1)
return
try:
summary = virtual_machine.summary
print "##################################################"
print "Name : ", summary.name
print "MoRef : ", summary.vm
print "State : ", summary.runtime.powerState
print "##################################################"
except Exception as error:
print "Unable to access summary for VM: ", virtual_machine.name
print error
pass
def main():
try:
import ssl
context = None
if hasattr(ssl, "_create_unverified_context"):
context = ssl._create_unverified_context()
si = SmartConnect(host='192.168.1.90',
user='aliyaman',
pwd='R2dxkf22!',
sslContext=context)
atexit.register(Disconnect, si)
content = si.RetrieveContent()
for datacenter in content.rootFolder.childEntity:
print "##################################################"
print "##################################################"
print "### datacenter : " + datacenter.name
print "##################################################"
if printVM:
if hasattr(datacenter.vmFolder, 'childEntity'):
vmFolder = datacenter.vmFolder
vmList = vmFolder.childEntity
for vm in vmList:
printVmInformation(vm)
if printDatastore:
datastores = datacenter.datastore
for ds in datastores:
printDatastoreInformation(ds)
if printHost:
if hasattr(datacenter.vmFolder, 'childEntity'):
hostFolder = datacenter.hostFolder
computeResourceList = hostFolder.childEntity
for computeResource in computeResourceList:
printComputeResourceInformation(computeResource)
except vmodl.MethodFault as error:
print "Caught vmodl fault : " + error.msg
return -1
return 0
if __name__ == "__main__":
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment