projects
/
invirt/packages/invirt-web.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
If the ACL for a locker isn't accessible, assume it's empty (closes #82)
[invirt/packages/invirt-web.git]
/
code
/
cache_acls.py
diff --git
a/code/cache_acls.py
b/code/cache_acls.py
index
34d5e1e
..
fa9b9f9
100644
(file)
--- a/
code/cache_acls.py
+++ b/
code/cache_acls.py
@@
-1,5
+1,6
@@
#!/usr/bin/python
#!/usr/bin/python
-from sipb_xen_database import *
+from invirt.database import *
+from invirt.config import structs as config
import sys
import getafsgroups
import subprocess
import sys
import getafsgroups
import subprocess
@@
-27,37
+28,45
@@
def expandName(name):
if ':' not in name:
if isUser(name):
return [name]
if ':' not in name:
if isUser(name):
return [name]
- name = 'system:'+name
- return getafsgroups.getAfsGroupMembers(name, 'athena.mit.edu')
+ return []
+ try:
+ return getafsgroups.getAfsGroupMembers(name, config.authz[0].cell)
+ except getafsgroups.AfsProcessError:
+ return []
-def refreshMachine(m):
+def accessList(m):
people = set()
people.update(expandLocker(m.owner))
people.update(expandName(m.administrator))
people = set()
people.update(expandLocker(m.owner))
people.update(expandName(m.administrator))
+ return people
+
+def refreshMachine(m):
+ people = accessList(m)
old_people = set(a.user for a in m.acl)
for removed in old_people - people:
ma = [x for x in m.acl if x.user == removed][0]
old_people = set(a.user for a in m.acl)
for removed in old_people - people:
ma = [x for x in m.acl if x.user == removed][0]
- ctx.current.delete(ma)
+ session.delete(ma)
for p in people - old_people:
for p in people - old_people:
- ma = MachineAccess(machine_id=m.machine_id, user=p)
- ctx.current.save(ma)
+ ma = MachineAccess(user=p)
+ m.acl.append(ma)
+ session.save_or_update(ma)
def refreshCache():
def refreshCache():
- transaction = ctx.current.create_transaction()
+ session.begin()
try:
try:
- machines = Machine.select()
+ machines = Machine.query().all()
for m in machines:
refreshMachine(m)
for m in machines:
refreshMachine(m)
- ctx.current.flush()
+ session.flush()
# Atomically execute our changes
# Atomically execute our changes
- transaction.commit()
+ session.commit()
except:
# Failed! Rollback all the changes.
except:
# Failed! Rollback all the changes.
- transaction.rollback()
+ session.rollback()
raise
if __name__ == '__main__':
raise
if __name__ == '__main__':
- connect('postgres://sipb-xen@sipb-xen-dev/sipb_xen')
+ connect()
refreshCache()
refreshCache()