These are tales of An Admin getting APEL+HTCondor-CE to work at GridKa/FZK Tier 1.
As background information, see
| import pyparsing as pp | |
| from pyparsing.diagram import to_railroad, railroad_to_html | |
| import tempfile | |
| import webbrowser | |
| pp.ParserElement.enable_left_recursion() | |
| # named references | |
| expr = pp.Forward().setName("expr") | |
| add_sub = pp.Forward().setName("add_sub") |
| #!/usr/bin/env python3 | |
| from typing import BinaryIO | |
| import socket | |
| import argparse | |
| import pathlib | |
| import struct | |
| import time | |
| CLI = argparse.ArgumentParser( |
| class Number: | |
| def __new__(cls, literal): | |
| for scls in cls.__subclasses__(): | |
| try: | |
| return scls(literal) | |
| except (TypeError, ValueError): | |
| pass | |
| raise TypeError("The path to hell is paved with incomplete examples") | |
| # here be numerical operations! |
| """ | |
| Script to recreate missing APEL blah/batch records from a condor history.d directory | |
| """ | |
| from typing import TextIO, TypeVar, List | |
| import argparse | |
| import pathlib | |
| import subprocess | |
| import os | |
| import threading | |
| import tempfile |
| from __future__ import annotations | |
| from abc import ABC, abstractmethod | |
| from typing import Generic, TypeVar | |
| R = TypeVar('R', bound='Runner') | |
| T = TypeVar('T') # result type | |
| class Command(ABC, Generic[T, R]): |
These are tales of An Admin getting APEL+HTCondor-CE to work at GridKa/FZK Tier 1.
As background information, see
| #!/bin/bash -l | |
| # | |
| # Wrapper when executing condor jobs | |
| # Run jobs via `bash -l` to force sourcing a login shell including all /etc/profile.d/*.sh scripts | |
| # | |
| exec "$@" |
| #!/usr/bin/env python3 | |
| from typing import NamedTuple, Iterable, Dict, List | |
| import argparse | |
| import pathlib | |
| import re | |
| CLI = argparse.ArgumentParser() | |
| CLI.add_argument( |
| #!/usr/bin/env python3 | |
| from typing import Dict | |
| def switch(cases: Dict[str, str], default='UNDEFINED', separator='\n'): | |
| # ["IfThenElse(ac, am", "IfThenElse(bc, bm", "IfThenElse(cc, cm", ...] | |
| switch_expression = separator.join( | |
| f"IfThenElse({condition}, {on_match}," | |
| for condition, on_match in cases.items() | |
| ) |
| from typing import NamedTuple, Optional, Deque, Any, Dict, AsyncIterable | |
| from usim import Pipe, instant | |
| from collections import deque | |
| from usim._primitives.notification import Notification | |
| class MonitoredPipeInfo(NamedTuple): | |
| requested_throughput: float | |
| available_throughput: float |