Created
August 18, 2017 13:54
-
-
Save AliYmn/4db9b3e8d6ea7336542f10b03e07d7d6 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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