#!/usr/bin/env python3 from pyVmomi import vim import pyVim.connect import atexit import argparse #import time import json import siteconf site_conf = siteconf.read() def get_args(): parser = argparse.ArgumentParser( description='Set VM network') parser.add_argument('-s', '--site', required=True, action='store', help='name of the site to connect to') parser.add_argument('--list-datastores', required=False, action='store_true', help='list all accessable datastores') parser.add_argument('--list-config', required=False, action='store_true', help='list relevant configuration') args = parser.parse_args() return args def get_datastores(content): obj_view = content.viewManager.CreateContainerView( content.rootFolder, [vim.Datastore], True) ds_list = obj_view.view obj_view.Destroy() result = [] for ds in ds_list: if not ds.summary.accessible: continue result.append(ds) return result #def get_all_objs(content, vimtype): # obj = {} # container = content.viewManager.CreateContainerView( # content.rootFolder, vimtype, True) # for managed_object_ref in container.view: # obj.update({managed_object_ref: managed_object_ref.name}) # return obj #def list_datastores(content): # datastores = get_datastores(content) # for ds in datastores: # cap = ds.summary.capacity / 1024**4 # free = ds.summary.freeSpace / 1024**4 # ratio = free / cap # print(f"{ds.summary.name} {ratio:.0%} {free:.3f} TB / {cap:.3f} TB") def main(): args = get_args() if not args.site in site_conf: print(f"site not found: {args.site}") exit(1) host = site_conf[args.site]['vcenter'] user = site_conf[args.site]['vcenter_user'] passwd = site_conf[args.site]['vcenter_passwd'] si = pyVim.connect.SmartConnect( host = host, user = user, pwd = passwd, disableSslCertValidation = True ) atexit.register(pyVim.connect.Disconnect, si) content = si.RetrieveContent() if args.list_datastores: datastores = get_datastores(content) names = [] for ds in datastores: names.append(ds.summary.name) names.sort() print(names) elif args.list_config: print({ 'vcenter_addr': site_conf[args.site]['vcenter'], 'vcenter_user': site_conf[args.site]['vcenter_user'] }); else: print("No command given.") if __name__ == "__main__": main() # vim: set tabstop=4 shiftwidth=4 expandtab smarttab: ####!/usr/bin/env python3 ###import argparse ###import siteconf ### ###site_conf = siteconf.read() ### ### ###def get_args(): ### parser = argparse.ArgumentParser( ### description='Set VM network') ### ### parser.add_argument('-s', '--site', ### required=True, ### action='store', ### help='name of the site to connect to') ### ### args = parser.parse_args() ### return args ### ### ### ###def main(): ### args = get_args() ### ### if not args.site in site_conf: ### print(f"site not found: {args.site}") ### exit(1) ### ### vms = get_vms(content) ### for vm in vms: ### for d in vm.config.hardware.device: ### if hasattr(d, 'macAddress'): ### print(f'{d.macAddress} {vm.name}') ### ### ### ### ###if __name__ == "__main__": ### main() ### #### vim: set tabstop=4 shiftwidth=4 expandtab smarttab: