X-Git-Url: http://xvm.mit.edu/gitweb/invirt/packages/invirt-remote.git/blobdiff_plain/6b8f7baf1bf4aeb801eb390a1720dd32ceca96e3..d7f33e5a8eba8e45cb5ad588a644a5482e82f7d4:/files/usr/sbin/sipb-xen-remconffs diff --git a/files/usr/sbin/sipb-xen-remconffs b/files/usr/sbin/sipb-xen-remconffs index 4db1414..275ba88 100755 --- a/files/usr/sbin/sipb-xen-remconffs +++ b/files/usr/sbin/sipb-xen-remconffs @@ -20,9 +20,6 @@ class RemConfFS(routefs.RouteFS): `-- conf The machine list and the acls are drawn from a database. - - This filesystem only implements the getattr, getdir, read, and readlink - calls, because this is a read-only filesystem. """ def __init__(self, *args, **kw): @@ -40,6 +37,7 @@ class RemConfFS(routefs.RouteFS): def make_map(self): m = Mapper() m.connect('', controller='getroot') + m.connect('acl', controller='getmachines') m.connect('acl/:machine', controller='getacl') m.connect('conf', controller='getconf') return m @@ -50,7 +48,7 @@ class RemConfFS(routefs.RouteFS): def getacl(self, machine, **kw): """Build the ACL file for a machine """ - machine = database.Machine.get_by(name=machine) + machine = database.Machine.query().filter_by(name=machine).one() users = [acl.user for acl in machine.acl] return "\n".join(map(self.userToPrinc, users) + ['include /etc/remctl/acl/web', @@ -62,15 +60,15 @@ class RemConfFS(routefs.RouteFS): return '\n'.join("control %s /usr/sbin/sipb-xen-remote-proxy-control" " /etc/remctl/remconffs/acl/%s" % (machine_name, machine_name) - for machine_name in self.getMachines())+'\n' + for machine_name in self.getmachines())+'\n' - def getMachines(self): + def getmachines(self, **kw): """Get the list of VMs in the database, clearing the cache if it's older than 15 seconds""" if time() - self.lasttime > 15: self.lasttime = time() database.clear_cache() - return [machine.name for machine in database.Machine.select()] + return [machine.name for machine in database.session.query(database.Machine).all()] def userToPrinc(self, user): """Convert Kerberos v4-style names to v5-style and append a default