fix remconffs
[invirt/packages/invirt-remote.git] / server / usr / sbin / invirt-remconffs
index 1cae001..17ec450 100755 (executable)
@@ -10,8 +10,6 @@ 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:
@@ -52,36 +50,36 @@ class RemConfFS(routefs.RouteFS):
     def getacl(self, machine, **kw):
         """Build the ACL file for a machine
         """
-        s = sa.sql.select([database.machine_access_table.class_mapper(type(self)).mapped_table.c.user], # Field to select from
+        s = sa.sql.select([database.machine_access_table.c.user], # Field to select from
                           sa.sql.and_( # where clause
-                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
+                database.machine_table.c.machine_id==database.machine_access_table.c.machine_id, # join field
+                database.machine_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)]
-        return "\n".join(users
-                 + ['include /etc/remctl/acl/web',
-                    ''])
+        return routefs.File("\n".join(users
+                                      + ['include /etc/remctl/acl/web',
+                                         '']))
     
     def getconf(self, **kw):
         """Build the master conf file, with all machines
         """
-        return '\n'.join("control %s /usr/sbin/invirt-remote-proxy-control"
-                 " /etc/remctl/remconffs/acl/%s"
-                 % (machine_name, machine_name)
-                 for machine_name in self.getmachines())+'\n'
+        return routefs.File('\n'.join("control %s /usr/sbin/invirt-remote-proxy-control"
+                                      " /etc/remctl/remconffs/acl/%s"
+                                      % (machine_name, machine_name)
+                                      for machine_name in self.getmachines())+'\n')
     
     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.class_mapper(type(self)).mapped_table.c.name])))
+        return list(row[0] for row in database.session.execute(sa.sql.select([database.Machine.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.class_mapper(type(self)).mapped_table.c.user]))]
+        acl = [self.userToPrinc(row[0]) for row in database.session.execute(sa.sql.select([database.admins_table.c.user]))]
         acl.append('include /etc/remctl/acl/web\n')
-        return '\n'.join(acl)
+        return routefs.File('\n'.join(acl))
     
     def userToPrinc(self, user):
         """Convert Kerberos v4-style names to v5-style and append a default