Skip to content

Commit

Permalink
Maybe fix getting StoragePod
Browse files Browse the repository at this point in the history
  • Loading branch information
Jc2k authored and pryorda committed May 10, 2019
1 parent 6d66a5b commit f835471
Showing 1 changed file with 48 additions and 10 deletions.
58 changes: 48 additions & 10 deletions vmware_exporter/vmware_exporter.py
Original file line number Diff line number Diff line change
Expand Up @@ -286,11 +286,15 @@ def folder_to_datacenter(self):

folders_to_dcs = {}
for folder in folders.values():
cur = folder['id']
while not isinstance(folders[cur]['parent'], vim.Datacenter):
cur = folders[cur]['parent']._moId

folders_to_dcs[folder['id']] = folders[cur]['parent']._moId
cur = folder
while cur['parent'] in folders:
if isinstance(cur, vim.Datacenter):
folders_to_dcs[folder['id']] = cur
continue
cur = folders[folder['parent']]
if not isinstance(cur, vim.Datacenter):
continue
folders_to_dcs[folder['id']] = cur

log('Built mapping of vim.Folder -> vim.Datacenter')
return folders_to_dcs
Expand Down Expand Up @@ -360,6 +364,24 @@ def datastore_inventory(self):
log("Fetched vim.Datastore inventory (%s)", datetime.datetime.utcnow() - start)
return datastores

@run_once_property
@defer.inlineCallbacks
def folder_to_storagepod(self):
log('Building mapping of vim.Folder -> vim.StoragePod')
folders = yield self.folder_inventory

folder_to_storagepods = {}
for folder in folders.values():
cur = folder
while cur['parent'] in folders:
if isinstance(cur, vim.StoragePod):
folder_to_storagepods[folder['id']] = cur
continue
cur = folders[cur['parent']]

log('Built mapping of vim.Folder -> vim.StoragePod')
return folder_to_storagepods

@run_once_property
@defer.inlineCallbacks
def host_system_inventory(self):
Expand Down Expand Up @@ -426,18 +448,29 @@ def vm_inventory(self):
@run_once_property
@defer.inlineCallbacks
def datastore_labels(self):
datastores, dcs, folder_to_datacenter = yield parallelize(
datastores, dcs, folder_to_datacenter, folder_to_storagepod = yield parallelize(
self.datastore_inventory,
self.datacenter_inventory,
self.folder_to_datacenter
self.folder_to_datacenter,
self.folder_to_storagepod,
)

labels = {}
for moid, datastore in datastores.items():
folder_id = datastore['parent']._moId

dc_name = ''
if folder_id in folder_to_datacenter:
dc_name = folder_to_datacenter[folder_id]['name']

ds_cluster = ''
if folder_id in folder_to_storagepod:
ds_cluster = folder_to_storagepod[folder_id]['name']

labels[moid] = [
datastore['name'],
dcs[folder_to_datacenter[datastore['parent']._moId]]['name'],
'ds_cluster'
dc_name,
ds_cluster,
]

return labels
Expand All @@ -455,9 +488,14 @@ def host_labels(self):
labels = {}
for moid, host in hosts.items():
comp_resource = compute_resource_by_children[host['id']]

dc_name = ''
if moid in folder_to_datacenter:
dc_name = folder_to_datacenter[moid]['name']

labels[moid] = [
host['name'],
dcs[folder_to_datacenter[comp_resource['parent']._moId]]['name'],
dc_name,
comp_resource.get('name', ''),
]

Expand Down

0 comments on commit f835471

Please sign in to comment.