X-Git-Url: http://xvm.mit.edu/gitweb/invirt/packages/invirt-remote.git/blobdiff_plain/b4aa88984ee1f2eb0d11d61737099032816732a4..bbd72b4baf966479bfd5998c69a9a8216d243570:/server/usr/sbin/invirt-remconffs?ds=sidebyside diff --git a/server/usr/sbin/invirt-remconffs b/server/usr/sbin/invirt-remconffs index ac4fe15..1cae001 100755 --- a/server/usr/sbin/invirt-remconffs +++ b/server/usr/sbin/invirt-remconffs @@ -10,6 +10,8 @@ import sqlalchemy as sa from invirt import database from invirt.config import structs as config +import sqlalchemy.orm.util as util + class RemConfFS(routefs.RouteFS): """ RemConfFS creates a filesytem for configuring remctl, like this: @@ -37,11 +39,11 @@ 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('adminacl', controller='getadmin') - m.connect('conf', controller='getconf') + m.connect('/', controller='getroot') + m.connect('/acl', controller='getmachines') + m.connect('/acl/:machine', controller='getacl') + m.connect('/adminacl', controller='getadmin') + m.connect('/conf', controller='getconf') return m def getroot(self, **kw): @@ -50,10 +52,10 @@ class RemConfFS(routefs.RouteFS): def getacl(self, machine, **kw): """Build the ACL file for a machine """ - s = sa.sql.select([database.machine_access_table.c.user], # Field to select from + s = sa.sql.select([database.machine_access_table.class_mapper(type(self)).mapped_table.c.user], # Field to select from sa.sql.and_( # where clause - database.machine_table.c.machine_id==database.machine_access_table.c.machine_id, # join field - database.machine_table.c.name == machine), # filter field + database.machine_table.class_mapper(type(self)).mapped_table.c.machine_id==database.machine_access_table.class_mapper(type(self)).mapped_table.c.machine_id, # join field + database.machine_table.class_mapper(type(self)).mapped_table.c.name == machine), # filter field from_obj=[database.machine_access_table, database.machine_table]) # from tables users = [self.userToPrinc(acl[0]) for acl in database.session.execute(s)] @@ -71,13 +73,13 @@ class RemConfFS(routefs.RouteFS): def getmachines(self, **kw): """Get the list of VMs in the database. Does not cache to prevent race conditions.""" - return list(row[0] for row in database.session.execute(sa.sql.select([database.Machine.c.name]))) + return list(row[0] for row in database.session.execute(sa.sql.select([database.Machine.class_mapper(type(self)).mapped_table.c.name]))) def getadmin(self, **kw): """ Get the list of administrators for the global ACL. """ - acl = [self.userToPrinc(row[0]) for row in database.session.execute(sa.sql.select([database.admins_table.c.user]))] + acl = [self.userToPrinc(row[0]) for row in database.session.execute(sa.sql.select([database.admins_table.class_mapper(type(self)).mapped_table.c.user]))] acl.append('include /etc/remctl/acl/web\n') return '\n'.join(acl)