2 # Copyright (C) The Arvados Authors. All rights reserved.
4 # SPDX-License-Identifier: AGPL-3.0
12 def parse_arguments(arguments):
13 arg_parser = argparse.ArgumentParser()
14 arg_parser.add_argument('--timespan', type=str)
15 args = arg_parser.parse_args(arguments)
18 def getowner(arv, uuid, owners):
21 if uuid[6:11] == "tpzed":
24 if uuid not in owners:
26 gp = arv.groups().get(uuid=uuid).execute()
27 owners[uuid] = gp["owner_uuid"]
31 return getowner(arv, owners[uuid], owners)
33 def getusername(arv, uuid):
34 u = arv.users().get(uuid=uuid).execute()
35 return "%s %s (%s)" % (u["first_name"], u["last_name"], uuid)
38 return "\"%s\" (%s)" % (u["name"], u["uuid"])
41 args = parse_arguments(arguments)
45 events = arvados.util.keyset_list_all(arv.logs().list, filters=[["created_at", ">=", "2020-10-01T14:51:42-05:00"]])
51 owner = getowner(arv, e["object_owner_uuid"], owners)
52 users.setdefault(owner, [])
54 if e["event_type"] == "create" and e["object_uuid"][6:11] == "tpzed":
55 users.setdefault(e["object_uuid"], [])
56 users[e["object_uuid"]].append("%s User account created" % e["event_at"])
57 if e["event_type"] == "update" and e["object_uuid"][6:11] == "tpzed":
59 #users.setdefault(e["object_uuid"], [])
60 #users[e["object_uuid"]].append("%s User account created" % e["event_at"])
61 elif e["event_type"] == "create" and e["object_uuid"][6:11] == "xvhdp":
62 if e["properties"]["new_attributes"]["requesting_container_uuid"] is None:
63 users[owner].append("%s Ran container %s %s" % (e["event_at"], getname(e["properties"]["new_attributes"]), e["uuid"]))
65 elif e["event_type"] == "update" and e["object_uuid"][6:11] == "xvhdp":
68 elif e["event_type"] == "create" and e["object_uuid"][6:11] == "j7d0g":
69 users[owner].append("%s Created project %s" % (e["event_at"], getname(e["properties"]["new_attributes"])))
71 elif e["event_type"] == "delete" and e["object_uuid"][6:11] == "j7d0g":
72 users[owner].append("%s Deleted project %s" % (e["event_at"], getname(e["properties"]["old_attributes"])))
74 elif e["event_type"] == "update" and e["object_uuid"][6:11] == "j7d0g":
75 users[owner].append("%s Updated project %s" % (e["event_at"], getname(e["properties"]["new_attributes"])))
77 elif e["event_type"] in ("create", "update") and e["object_uuid"][6:11] == "gj3su":
78 if len(users[owner]) > 0 and users[owner][-1].endswith("activity"):
79 sp = users[owner][-1].split(" ")
80 users[owner][-1] = "%s to %s Account activity" % (sp[0], e["event_at"])
82 users[owner].append("%s Account activity" % (e["event_at"]))
84 elif e["event_type"] == "create" and e["object_uuid"][6:11] == "o0j2j":
85 if e["properties"]["new_attributes"]["link_class"] == "tag":
86 users[owner].append("%s Tagged %s" % (e["event_at"], e["properties"]["new_attributes"]["head_uuid"]))
87 elif e["properties"]["new_attributes"]["link_class"] == "permission":
88 users[owner].append("%s Shared %s with %s" % (e["event_at"], e["properties"]["new_attributes"]["tail_uuid"], e["properties"]["new_attributes"]["head_uuid"]))
90 users[owner].append("%s %s %s %s" % (e["event_type"], e["object_kind"], e["object_uuid"], e["uuid"]))
92 elif e["event_type"] == "delete" and e["object_uuid"][6:11] == "o0j2j":
93 if e["properties"]["old_attributes"]["link_class"] == "tag":
94 users[owner].append("%s Untagged %s" % (e["event_at"], e["properties"]["old_attributes"]["head_uuid"]))
95 elif e["properties"]["old_attributes"]["link_class"] == "permission":
96 users[owner].append("%s Unshared %s with %s" % (e["event_at"], e["properties"]["old_attributes"]["tail_uuid"], e["properties"]["old_attributes"]["head_uuid"]))
98 users[owner].append("%s %s %s %s" % (e["event_type"], e["object_kind"], e["object_uuid"], e["uuid"]))
100 elif e["event_type"] == "create" and e["object_uuid"][6:11] == "4zz18":
101 if e["properties"]["new_attributes"]["properties"].get("type") in ("log", "output", "intermediate"):
104 users[owner].append("%s Created collection %s %s" % (e["event_at"], getname(e["properties"]["new_attributes"]), e["uuid"]))
106 elif e["event_type"] == "update" and e["object_uuid"][6:11] == "4zz18":
107 users[owner].append("%s Updated collection %s %s" % (e["event_at"], getname(e["properties"]["new_attributes"]), e["uuid"]))
109 elif e["event_type"] == "delete" and e["object_uuid"][6:11] == "4zz18":
110 users[owner].append("%s Deleted collection %s %s" % (e["event_at"], getname(e["properties"]["old_attributes"]), e["uuid"]))
113 users[owner].append("%s %s %s %s" % (e["event_type"], e["object_kind"], e["object_uuid"], e["uuid"]))
115 for k,v in users.items():
116 if k is None or k.endswith("-tpzed-000000000000000"):
118 print("%s:" % getusername(arv, k))