Exemple #1
0
 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']))
Exemple #2
0
 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']))
Exemple #3
0
 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']))
Exemple #4
0
 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']))
Exemple #5
0
 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
Exemple #8
0
    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
Exemple #10
0
    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
Exemple #11
0
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')