Beispiel #1
0
def filterObjs(objects, sts, ets, name=None, uselmts=False):
    try:
        op = {}
        xobjs = filterByName(objects, name) if name is not None else objects
        for obj in xobjs:
            dt = obj["LastModified"]
            ts = dt.timestamp()
            if ts not in op:
                op[ts] = []
            if uselmts:
                state = filterTS(obj, ts, sts, ets)
                if state:
                    op[ts].append(obj)
            elif sts == 0:
                op[ts].append(obj)
            else:
                ts, state = filterRE(obj["Key"], sts, ets)
                if ts not in op:
                    op[ts] = []
                if state:
                    op[ts].append(obj)
        return op
    except Exception as e:
        msg = f"failed to filter xobjs: sts {sts}, ets {ets}, name {name}, uselmts {uselmts}"
        msg += f"\nException: {e}"
        errorExit("filterObjs", msg)
Beispiel #2
0
def test_exits():
    """It attempts sys.exit."""
    fname = "test_notify"
    msg = "This is the test exception"
    e = TheException(msg)
    with pytest.raises(SystemExit):
        errorExit(fname, e, 1)
Beispiel #3
0
def filterByName(objects, name):
    try:
        objs = [obj for obj in objects if name in obj["Key"]]
        return objs
    except Exception as e:
        msg = f"failed to filter by name: {name}"
        msg += f"\nException {e}"
        errorExit("filterByName", msg)
Beispiel #4
0
def filterTS(obj, ts, sts, ets):
    try:
        if ts >= sts and ts <= ets:
            return True
        return False
    except Exception as e:
        msg = f"failed to filterTS object {obj}, sts {sts}, ets {ets}"
        msg += f"\nException {e}"
        errorExit("filterTS", msg)
Beispiel #5
0
def makeTsFromStr(dtstr):
    try:
        if dtstr.isnumeric() and len(dtstr) == 10:
            ts = int(dtstr)
        else:
            dt = datetime.datetime.fromisoformat(dtstr)
            ts = dt.timestamp()
        return ts
    except Exception as e:
        msg = f"failed to decode '{dtstr}' into a date/time"
        errorExit("makeTsFromStr", msg)
Beispiel #6
0
def filterRE(name, sts, ets):
    ts = ets
    try:
        m = tre.match(name)
        if m is not None:
            dt = datetime.datetime.fromisoformat(m[1])
            ts = dt.timestamp()
            if ts >= sts and ts <= ets:
                return (ts, True)
        return (ts, False)
    except Exception as e:
        msg = f"failed to filterRE name {name}, sts {sts}, ets {ets}"
        msg += f"\nException {e}"
        errorExit("filterRE", msg)
Beispiel #7
0
def makeTsFromLength(length, startts):
    try:
        ll = length[-1:]
        xl = int(length[:-1])
        mult = 0
        ets = startts
        if ll == "h":
            mult = 3600
        elif ll == "d":
            mult = 86400
        elif ll == "w":
            mult = 86400 * 7
        zl = xl * mult
        if zl > 0:
            ets = startts + zl
        return ets
    except Exception as e:
        msg = f"failed to decode '{length}' into a sane length of time"
        msg += f"\nException: {e}"
        errorExit("makeTsFromStr", msg)