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:
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)]
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)