def main()

in advanced-monitoring/Worker/main.py [0:0]


def main():
    urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
    #set output files:
    interface_csv = "./interface.csv"
    cpu_csv = "./cpu.csv"
    #Get Identity
    try:
        if os.environ['local'] == "True":
            credential = AzureCliCredential()
    except:
        try:
            MSI_credential = ManagedIdentityCredential(client_id=os.environ['client_id'])
        except:
            MSI_credential = DefaultAzureCredential()
        credential = ChainedTokenCredential(MSI_credential)
    #collect cloud info
    resource_id = os.environ['AVS_CLOUD_ID']
    subscription_id = resource_id[15:resource_id[15:].find("/")+15]
    avs_client = AVSClient(credential, subscription_id)
    resource_group_name = resource_id[resource_id.find("resourceGroups/")+15:resource_id.find("/",resource_id.find("resourceGroups/")+15)]
    private_cloud_name = resource_id[resource_id.find("privateClouds/")+14:]
    print("Subscription Id: {}\r\nResource Group Name: {}\r\nCloud Name: {}".format(subscription_id,resource_group_name,private_cloud_name))
    logger.debug("Subscription Id: {}\r\nResource Group Name: {}\r\nCloud Name: {}".format(subscription_id,resource_group_name,private_cloud_name))
    #get cloud object
    cloud = avs_client.private_clouds.get(resource_group_name=resource_group_name,private_cloud_name=private_cloud_name)
    #colllect more info
    region_id = cloud.location
    
    nsxUri= cloud.endpoints.nsxt_manager[:-1]
    cloud_credentials = avs_client.private_clouds.list_admin_credentials(resource_group_name, cloud.name)
     #set env for telegraf
    os.environ["VCSA_URI"] = cloud.endpoints.vcsa
    os.environ["VCSA_USER"] = cloud_credentials.vcenter_username
    os.environ["VCSA_PASS"] = cloud_credentials.vcenter_password
    os.environ["REGION"] = region_id
    os.system("systemctl stop telegraf")
    #set telegraf vars
    os.system('systemctl import-environment VCSA_URI')
    os.system('systemctl import-environment VCSA_USER')
    os.system('systemctl import-environment VCSA_PASS')
    os.system('systemctl import-environment REGION')
    os.system('systemctl import-environment AVS_CLOUD_ID')
    sleep(10)
    os.system("systemctl start telegraf")
    #connect to nsx-t
    nsxtConnection = NSXTConnection(nsxtUri=nsxUri, nsxtUsername=cloud_credentials.nsxt_username, nsxtPassword=cloud_credentials.nsxt_password)
    ### Get T0s Interfaces ###
    nsxtT0  = getT0s(nsxtConnection=nsxtConnection)[0]
    ### Get EVM Transport Nodes ###
    nodes = getEdgeNodes(nsxtConnection=nsxtConnection)
    count=0
    #main loop
    while True:
        try:
            # get stats
            interfacestats = nsxtT0.getInterfacesStats()
            cpustats = getCpuStats(nodes=nodes)
            #check to make sure old dataframe exists
            if (count == 1):
                #create new frame for delta values
                delta_frame = pandas.DataFrame(columns= interfacestats.columns)
                #loop through rows
                for index, row in interfacestats.iterrows():
                    #find coresponding row in old
                    df2row = interfacestatsold.loc[interfacestatsold['t0_interface']==row['t0_interface']]
                    #add new row to delta
                    delta_frame = delta_frame.append(pandas.Series(dtype='float64'),ignore_index=True)
                    #loop through cols
                    for col_name, value in row.items():
                        #try to set numerical value.  on error assum string
                        try:
                            elapsed_s = (int(df2row['last_update_timestamp'])-int(row['last_update_timestamp']))/1000
                            delta_frame.loc[len(delta_frame.index)-1][col_name]=(int(df2row[col_name])-int(row[col_name]))/elapsed_s
                        except:
                            delta_frame.loc[len(delta_frame.index)-1][col_name]=value
                #write to disk with header if new append if exists
                if os.path.isfile(interface_csv):
                    delta_frame.to_csv(interface_csv, index=False, mode="a",header=False)
                else:
                    delta_frame.to_csv(interface_csv, index=False, mode="a",header=True)
                if os.path.isfile(cpu_csv):
                    cpustats.to_csv(cpu_csv, index=False,mode="a",header=False)
                else:
                    cpustats.to_csv(cpu_csv, index=False,mode="a",header=True)
                #make copy of frame for next lop
                interfacestatsold = interfacestats.copy(deep=True)
            else:
                #make old frame if not exiting
                interfacestatsold = interfacestats.copy(deep=True)
        except Exception as e:
            print(e)
            logger.debug(e)
            break
        #set 1 after first run
        count = 1
        #sleep for 60 seconds
        sleep(60)
    return