ansible-tools/vmw_vcenter_data

143 lines
3.7 KiB
Python
Executable File

#!/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: