Skip to content

Instantly share code, notes, and snippets.

@ram1123
Last active February 19, 2023 14:08
Show Gist options
  • Save ram1123/afb9f2e93514bc42a5da86feed0efe1e to your computer and use it in GitHub Desktop.
Save ram1123/afb9f2e93514bc42a5da86feed0efe1e to your computer and use it in GitHub Desktop.
From big crab status output prepare a summary markdown table
import os
import sys
if sys.version_info[0] < 3:
print("This script requires Python 3. Please use Python 3 to run this script.")
sys.exit()
# Run crab status command and append in log file
ifRunCrabStatus = False
print("Start of program.")
if ifRunCrabStatus:
command = "echo crab_* | xargs -n 1 crab status >& crab_status.log "
print(f"Run the crab status command: {command}")
os.system(command)
print("crab command finished. Going to extract information from log file.")
# Define the search patterns
search_pattern1 = "Task name:"
search_pattern2 = "Jobs status:"
search_pattern3 = "Status on the CRAB server:"
# Open the file for reading
with open("crab_status.log", "r") as f:
# Read all lines from the file
lines = f.readlines()
# Keep track of the line number
line_number = 0
# Initialize variables to store the search results
task_name = ""
jobs_status = ""
crab_status = ""
# Print the table as a Markdown table
print("Task name | Jobs status| Crab status")
print("----------|------------|------------")
# Loop over all lines in the file
for line in lines:
line_number += 1
# Check if the line matches the search patterns
if search_pattern1 in line:
# task_name = line.strip().replace(search_pattern1, "").strip()
task_name = ((line.split(search_pattern1)[-1].strip()).split(":")[1]).replace("rasharma_crab_legacyRunII_","")
elif search_pattern3 in line:
crab_status = line.strip().replace(search_pattern3, "").strip()
# print("L29# jobs_status:",jobs_status,"crab_status:", crab_status,type(crab_status))
# if crab_status == "TAPERECALL": print("TAPERECALL")
# if crab_status == "SUBMITTED": print("SUBMITTED")
# if crab_status != "SUBMITTED" : print("Ram")
elif crab_status == "SUBMITTED" and search_pattern2 in line:
# jobs_status = line.strip().replace(search_pattern2, "").strip()
jobs_status = line.split(search_pattern2)[-1].strip()
# print("L36# jobs_status:",jobs_status,"crab_status:", crab_status)
elif crab_status == "TAPERECALL" :
jobs_status = "Pending"
elif crab_status == "FAILED" :
jobs_status = "Pending"
# print("L40# jobs_status:",jobs_status,"crab_status:", crab_status)
# If both task name and crab status are found, print them as a table row
if task_name and crab_status and jobs_status:
# if jobs_status:
print(f"{task_name} | {jobs_status} | {crab_status} |")
# else:
# print(f"| {task_name} | N/A | {crab_status} |")
# Reset the variables
task_name = ""
jobs_status = ""
crab_status = ""
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment