Untitled

mail@pastecode.io avatar
unknown
plain_text
a year ago
3.1 kB
4
Indexable
Never
def purge_logs():
    vm_details = get_vm_details()

    for vm in vm_details:
        vm_id = vm['vm_id']
        vm_ip = vm['vm_ip']
        syslog_file = vm['syslog_file_location']
        retention_period = get_retention_period(vm_id)
        bookmark_index = get_bookmark_index(vm_ip)

        print("VM:", vm_id)
        print("Syslog File Location:", syslog_file)
        print("Retention Period:", retention_period)
        print("Bookmark Index:", bookmark_index)
        print("Purging Logs...")

        try:
            bookmark_line = linecache.getline(syslog_file, int(bookmark_index)).strip()
            print("Bookmark Line:", bookmark_line)
        except Exception as e:
            print("Exception while reading line from file:", e)
            return None

        if not bookmark_line:
            print("Bookmark line not found.")
            continue

        bookmark_timestamp = get_timestamp_from_line(bookmark_line)
        print("Bookmark Timestamp:", bookmark_timestamp)

        # Calculate the purging date (retention_period days before the bookmark timestamp)
        bookmark_date = datetime.datetime.strptime(bookmark_timestamp, "%Y-%m-%dT%H:%M:%S+00:00").date()
        print("Bookmark Date:", bookmark_date)

        current_date = datetime.datetime.now().date()
        print("Current Date:", current_date)

        purging_date = current_date - datetime.timedelta(days=retention_period)
        print("Purging Date:", purging_date)
    
    
        if purging_date < bookmark_date:
            print("Performing Purging..")
            perform_purging()
        else:
            print("Purging date greater than Bookmark Date")
        
        
        # Perform the log purging
        temp_file = syslog_file + ".tmp"  # Create a temporary file
        
        # Search for the purging date in the syslog file
        purging_line_number = None
        with open(syslog_file, "r") as file:
            for line_number, line in enumerate(file, 1):
                if str(purging_date) in line:
                    purging_line_number = line_number
                    print("Purging Line Number : ",purging_line_number)
                    break

        if purging_line_number is not None:
            # Delete lines before the purging date
            with open(syslog_file, "r") as input_file, open(temp_file, "w") as output_file:
                for line_number, line in enumerate(input_file, 1):
                    if line_number >= purging_line_number:
                        output_file.write(line)

            # Replace the original file with the temporary file
            shutil.move(temp_file, syslog_file)

            lines_purged = purging_line_number - 1
            print("Purging Completed")
            print("Lines Purged:", lines_purged)
            print("Printing First Two Lines:")
            with open(syslog_file, "r") as file:
                print(file.readline())
                print(file.readline())
        else:
            print("Purging is not needed.")

purge_logs()