def add_datastore(self): vrops = Vrops() for ds in vrops.get_datastores(target=self.target, token=self.token, parentid=self.uuid): self.datastores.append( Datastore(target=self.target, token=self.token, name=ds['name'], uuid=ds['uuid']))
def add_host(self): vrops = Vrops() for hosts in vrops.get_hosts(target=self.target, token=self.token, parentid=self.uuid): self.hosts.append( Host(target=self.target, token=self.token, name=hosts['name'], uuid=hosts['uuid']))
def add_vm(self): vrops = Vrops() for vm in Vrops.get_virtualmachines(vrops, target=self.target, token=self.token, parentid=self.uuid): self.vms.append( VirtualMachine(target=self.target, token=self.token, name=vm['name'], uuid=vm['uuid']))
def add_datacenter(self): vrops = Vrops() for dc in Vrops.get_datacenter(vrops, target=self.target, token=self.token, parentid=self.uuid): self.datacenter.append( Datacenter(target=self.target, token=self.token, name=dc['name'], uuid=dc['uuid']))
def add_cluster(self): vrops = Vrops() for cluster in Vrops.get_cluster(vrops, target=self.target, token=self.token, parentid=self.uuid): self.clusters.append( Cluster(target=self.target, token=self.token, name=cluster['name'], uuid=cluster['uuid']))
def __init__(self): self.vrops_entity_name = 'base' while os.environ['TARGET'] not in self.get_target_tokens(): logger.critical('Cannot start exporter without valid target!') logger.critical( f'{os.environ["TARGET"]} is not in vrops_list from inventory') logger.critical( f'The following vrops are known from inventory: {[t for t in self.target_tokens]}, retrying in 60s' ) time.sleep(60) self.target = os.environ.get('TARGET') self.vrops = Vrops() self.name = self.__class__.__name__ self.label_names = [] self.project_ids = []
def create_vcenter_objects(self, target: str, token: str): vrops = Vrops() vcenter_adapter = Vrops.get_vcenter_adapter(vrops, target, token) if not vcenter_adapter: logger.critical(f'Could not get vcenter adapter!') return False logger.debug(f'Collecting vcenter: {vcenter_adapter.name}') datacenter = Vrops.get_datacenter(vrops, target, token, [vcenter_adapter.uuid]) cluster = Vrops.get_cluster(vrops, target, token, [dc.uuid for dc in datacenter]) datastores = Vrops.get_datastores(vrops, target, token, [dc.uuid for dc in datacenter]) hosts = Vrops.get_hosts(vrops, target, token, [cl.uuid for cl in cluster]) vms = Vrops.get_vms(vrops, target, token, [hs.uuid for hs in hosts], vcenter_adapter.uuid) for dc in datacenter: vcenter_adapter.add_datacenter(dc) for dc_object in vcenter_adapter.datacenter: logger.debug(f'Collecting datacenter: {dc_object.name}') for ds in datastores: if ds.parent == dc_object.uuid: dc_object.add_datastore(ds) logger.debug(f'Collecting datastore: {ds.name}') for cl in cluster: dc_object.add_cluster(cl) for cl_object in dc_object.clusters: logger.debug(f'Collecting cluster: {cl_object.name}') for hs in hosts: if hs.parent == cl_object.uuid: cl_object.add_host(hs) for hs_object in cl_object.hosts: logger.debug(f'Collecting host: {hs_object.name}') for vm in vms: if vm.parent == hs_object.uuid: hs_object.add_vm(vm) logger.debug(f'Collecting VM: {vm.name}') return vcenter_adapter
def create_resource_objects(self, target: str, token: str) -> Vcenter: vrops = Vrops() vcenter_name, vcenter_uuid = Vrops.get_adapter(vrops, target, token) if not vcenter_name: return False logger.debug(f'Collecting vcenter: {vcenter_name}') datacenter = Vrops.get_datacenter(vrops, target, token, [vcenter_uuid]) cluster_and_ds = Vrops.get_cluster_and_datastores(vrops, target, token, [dc.get('uuid') for dc in datacenter]) cluster = [cl for cl in cluster_and_ds if cl.get('resourcekind') == "ClusterComputeResource"] dss = [ds for ds in cluster_and_ds if ds.get('resourcekind') == "Datastore"] hosts = Vrops.get_hosts(vrops, target, token, [cl.get('uuid') for cl in cluster]) vms = Vrops.get_vms(vrops, target, token, [hs.get('uuid') for hs in hosts]) vcenter = Vcenter(target, token, vcenter_uuid, vcenter_name) for dc in datacenter: vcenter.add_datacenter(dc) for dc_object in vcenter.datacenter: logger.debug(f'Collecting datacenter: {dc_object.name}') for ds in dss: if ds.get('parent') == dc_object.uuid: dc_object.add_datastore(ds) logger.debug(f'Collecting Datastore: {ds.get("name")}') for cl in cluster: dc_object.add_cluster(cl) for cl_object in dc_object.clusters: logger.debug(f'Collecting cluster: {cl_object.name}') for hs in hosts: if hs.get('parent') == cl_object.uuid: cl_object.add_host(hs) for hs_object in cl_object.hosts: logger.debug(f'Collecting host: {hs_object.name}') for vm in vms: if vm.get('parent') == hs_object.uuid: hs_object.add_vm(vm) logger.debug(f'Collecting VM: {vm.get("name")}') return vcenter
def create_nsxt_objects(self, target: str, token: str): vrops = Vrops() nsxt_adapter = Vrops.get_nsxt_adapter(vrops, target, token) if not nsxt_adapter: return False nsxt_mgmt_plane = NSXTMgmtPlane(target, token) for adapter in nsxt_adapter: logger.debug(f'Collecting NSX-T adapter: {adapter.name}') nsxt_mgmt_plane.add_adapter(adapter) nsxt_mgmt_cluster = Vrops.get_nsxt_mgmt_cluster( vrops, target, token, [a.uuid for a in nsxt_adapter]) for adapter_object in nsxt_mgmt_plane.adapter: for mgmt_cluster in nsxt_mgmt_cluster: if mgmt_cluster.parent == adapter_object.uuid: adapter_object.add_mgmt_cluster(mgmt_cluster) logger.debug( f'Collecting NSX-T management cluster: {mgmt_cluster.name}' ) return nsxt_mgmt_plane
def query_vrops(self, target, vrops_short_name, iteration): vrops = Vrops() logger.info(f'Querying {target}') token, self.response_codes[target]["token"] = Vrops.get_token( target=target) if not token: logger.warning( f'retrying connection to {target} in next iteration {self.iteration + 1}' ) return False self.target_tokens[target] = token logger.info( f'########## Collecting resources {vrops_short_name}... ##########' ) inventory_config = self.read_inventory_config() query_specs = inventory_config.get('query_specs', {}) vcenter = self.create_vcenter_objects(vrops, target, token, query_specs) nsxt_adapter = self.create_nsxt_objects(vrops, target, token, query_specs) vcops_adapter = self.create_vcops_objects(vrops, target, token, inventory_config) sddc_adapter = self.create_sddc_health_objects(vrops, target, token, inventory_config) self.vcenter_dict[target] = vcenter self.nsxt_dict[target] = nsxt_adapter self.vcops_dict[target] = vcops_adapter self.sddc_dict[target] = sddc_adapter if iteration == 1: self.alertdefinitions = Vrops.get_alertdefinitions( vrops, target, token) return True
from tools.Vrops import Vrops from InventoryBuilder import InventoryBuilder import json import os """ Purpose of this file was to call specific parts of the vrops exporter to test the mock server. I keep this file in so that the setup needed is transparent for further development. This file currently starts the InventoryBuilder as a server, which polls against the mock server once every 500 seconds. """ if __name__ == '__main__': os.environ['User'] = '******' os.environ['PASSWORD'] = '******' target = '127.0.0.1' vrops = Vrops() """ with open('./mockingServer/data/inventory_builder_response.json', 'r') as fp: response = json.load(fp) print(response["resourcesRelations"]["resource"]["resourceKey"]["name"]) print(response["resourcesRelations"]["resource"]["identifier"]) print(response["resourcesRelations"]["resource"]["resourceKey"]["resourceKindKey"]) print(response["resourcesRelations"]["relatedResources"][0]) """ ib = InventoryBuilder('./mockingServer/data/atlasmock.json', 9011, 500, 60) #ib = InventoryBuilder.create_resource_objects('127.0.0.1', '779b8ede-1337-11eb-9581-3c58c27e75a6') #print(ib) #response = vrops.get_resources('127.0.0.1', 'token', [1234], 'reskinds') #print(response) #name, uuid = Vrops.get_adapter('127.0.0.1', 'token')