import arvados
import arvados.util
+import datetime
+import ciso8601
def parse_arguments(arguments):
arg_parser = argparse.ArgumentParser()
- arg_parser.add_argument('--timespan', type=str)
+ arg_parser.add_argument('--days', type=int)
args = arg_parser.parse_args(arguments)
return args
def getusername(arv, uuid):
u = arv.users().get(uuid=uuid).execute()
- return "%s %s (%s)" % (u["first_name"], u["last_name"], uuid)
+ return "%s %s <%s> (%s)" % (u["first_name"], u["last_name"], u["email"], uuid)
def getname(u):
return "\"%s\" (%s)" % (u["name"], u["uuid"])
arv = arvados.api()
- events = arvados.util.keyset_list_all(arv.logs().list, filters=[["created_at", ">=", "2020-10-01T14:51:42-05:00"]])
+ since = datetime.datetime.utcnow() - datetime.timedelta(days=args.days)
+
+ print("Activity since %s\n" % (datetime.datetime.now() - datetime.timedelta(days=args.days)).isoformat())
+
+ events = arvados.util.keyset_list_all(arv.logs().list, filters=[["created_at", ">=", since.isoformat()]])
users = {}
owners = {}
for e in events:
owner = getowner(arv, e["object_owner_uuid"], owners)
users.setdefault(owner, [])
+ event_at = ciso8601.parse_datetime(e["event_at"]).astimezone().isoformat()
+ # loguuid = e["uuid"]
+ loguuid = ""
if e["event_type"] == "create" and e["object_uuid"][6:11] == "tpzed":
users.setdefault(e["object_uuid"], [])
- users[e["object_uuid"]].append("%s User account created" % e["event_at"])
- if e["event_type"] == "update" and e["object_uuid"][6:11] == "tpzed":
+ users[e["object_uuid"]].append("%s User account created" % event_at)
+
+ elif e["event_type"] == "update" and e["object_uuid"][6:11] == "tpzed":
pass
- #users.setdefault(e["object_uuid"], [])
- #users[e["object_uuid"]].append("%s User account created" % e["event_at"])
+
elif e["event_type"] == "create" and e["object_uuid"][6:11] == "xvhdp":
if e["properties"]["new_attributes"]["requesting_container_uuid"] is None:
- users[owner].append("%s Ran container %s %s" % (e["event_at"], getname(e["properties"]["new_attributes"]), e["uuid"]))
+ users[owner].append("%s Ran container %s %s" % (event_at, getname(e["properties"]["new_attributes"]), loguuid))
elif e["event_type"] == "update" and e["object_uuid"][6:11] == "xvhdp":
pass
elif e["event_type"] == "create" and e["object_uuid"][6:11] == "j7d0g":
- users[owner].append("%s Created project %s" % (e["event_at"], getname(e["properties"]["new_attributes"])))
+ users[owner].append("%s Created project %s" % (event_at, getname(e["properties"]["new_attributes"])))
elif e["event_type"] == "delete" and e["object_uuid"][6:11] == "j7d0g":
- users[owner].append("%s Deleted project %s" % (e["event_at"], getname(e["properties"]["old_attributes"])))
+ users[owner].append("%s Deleted project %s" % (event_at, getname(e["properties"]["old_attributes"])))
elif e["event_type"] == "update" and e["object_uuid"][6:11] == "j7d0g":
- users[owner].append("%s Updated project %s" % (e["event_at"], getname(e["properties"]["new_attributes"])))
+ users[owner].append("%s Updated project %s" % (event_at, getname(e["properties"]["new_attributes"])))
elif e["event_type"] in ("create", "update") and e["object_uuid"][6:11] == "gj3su":
if len(users[owner]) > 0 and users[owner][-1].endswith("activity"):
sp = users[owner][-1].split(" ")
- users[owner][-1] = "%s to %s Account activity" % (sp[0], e["event_at"])
+ users[owner][-1] = "%s to %s Account activity" % (sp[0], event_at)
else:
- users[owner].append("%s Account activity" % (e["event_at"]))
+ users[owner].append("%s Account activity" % (event_at))
elif e["event_type"] == "create" and e["object_uuid"][6:11] == "o0j2j":
if e["properties"]["new_attributes"]["link_class"] == "tag":
- users[owner].append("%s Tagged %s" % (e["event_at"], e["properties"]["new_attributes"]["head_uuid"]))
+ users[owner].append("%s Tagged %s" % (event_at, e["properties"]["new_attributes"]["head_uuid"]))
elif e["properties"]["new_attributes"]["link_class"] == "permission":
- users[owner].append("%s Shared %s with %s" % (e["event_at"], e["properties"]["new_attributes"]["tail_uuid"], e["properties"]["new_attributes"]["head_uuid"]))
+ users[owner].append("%s Shared %s with %s" % (event_at, e["properties"]["new_attributes"]["tail_uuid"], e["properties"]["new_attributes"]["head_uuid"]))
else:
- users[owner].append("%s %s %s %s" % (e["event_type"], e["object_kind"], e["object_uuid"], e["uuid"]))
+ users[owner].append("%s %s %s %s" % (e["event_type"], e["object_kind"], e["object_uuid"], loguuid))
elif e["event_type"] == "delete" and e["object_uuid"][6:11] == "o0j2j":
if e["properties"]["old_attributes"]["link_class"] == "tag":
- users[owner].append("%s Untagged %s" % (e["event_at"], e["properties"]["old_attributes"]["head_uuid"]))
+ users[owner].append("%s Untagged %s" % (event_at, e["properties"]["old_attributes"]["head_uuid"]))
elif e["properties"]["old_attributes"]["link_class"] == "permission":
- users[owner].append("%s Unshared %s with %s" % (e["event_at"], e["properties"]["old_attributes"]["tail_uuid"], e["properties"]["old_attributes"]["head_uuid"]))
+ users[owner].append("%s Unshared %s with %s" % (event_at, e["properties"]["old_attributes"]["tail_uuid"], e["properties"]["old_attributes"]["head_uuid"]))
else:
- users[owner].append("%s %s %s %s" % (e["event_type"], e["object_kind"], e["object_uuid"], e["uuid"]))
+ users[owner].append("%s %s %s %s" % (e["event_type"], e["object_kind"], e["object_uuid"], loguuid))
elif e["event_type"] == "create" and e["object_uuid"][6:11] == "4zz18":
if e["properties"]["new_attributes"]["properties"].get("type") in ("log", "output", "intermediate"):
pass
else:
- users[owner].append("%s Created collection %s %s" % (e["event_at"], getname(e["properties"]["new_attributes"]), e["uuid"]))
+ users[owner].append("%s Created collection %s %s" % (event_at, getname(e["properties"]["new_attributes"]), loguuid))
elif e["event_type"] == "update" and e["object_uuid"][6:11] == "4zz18":
- users[owner].append("%s Updated collection %s %s" % (e["event_at"], getname(e["properties"]["new_attributes"]), e["uuid"]))
+ users[owner].append("%s Updated collection %s %s" % (event_at, getname(e["properties"]["new_attributes"]), loguuid))
elif e["event_type"] == "delete" and e["object_uuid"][6:11] == "4zz18":
- users[owner].append("%s Deleted collection %s %s" % (e["event_at"], getname(e["properties"]["old_attributes"]), e["uuid"]))
+ if e["properties"]["old_attributes"]["properties"].get("type") in ("log", "output", "intermediate"):
+ pass
+ else:
+ users[owner].append("%s Deleted collection %s %s" % (event_at, getname(e["properties"]["old_attributes"]), loguuid))
else:
- users[owner].append("%s %s %s %s" % (e["event_type"], e["object_kind"], e["object_uuid"], e["uuid"]))
+ users[owner].append("%s %s %s %s" % (e["event_type"], e["object_kind"], e["object_uuid"], loguuid))
for k,v in users.items():
if k is None or k.endswith("-tpzed-000000000000000"):