From: Peter Iannucci Date: Tue, 17 Feb 2009 04:52:01 +0000 (-0500) Subject: RAM quotas at remctl; RAM quota exception script, table, and usage in -web and -remot... X-Git-Tag: 0.1.3~2 X-Git-Url: http://xvm.mit.edu/gitweb/invirt/packages/invirt-database.git/commitdiff_plain/fe334bb175017b9c5988159652718e29dafe83cd RAM quotas at remctl; RAM quota exception script, table, and usage in -web and -remote-create; /etc/nocreate support svn path=/trunk/packages/invirt-database/; revision=2132 --- diff --git a/debian/changelog b/debian/changelog index 088be6d..24d4a52 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +invirt-database (0.1.3) unstable; urgency=low + + * Added owner table with ram quotas. + * Refactored Owner class into separate sourcefile + + -- Peter A. Iannucci Mon, 16 Feb 2009 23:49:39 -0500 + invirt-database (0.1.2) unstable; urgency=low * Clean up the .egg-info directory from the right place. diff --git a/python/database/models.py b/python/database/models.py index e3f2996..2944a1f 100644 --- a/python/database/models.py +++ b/python/database/models.py @@ -16,6 +16,7 @@ __all__ = ['meta', 'cdroms_table', 'mirrors_table', 'autoinstalls_table', + 'owners_table', 'Machine', 'MachineAccess', 'NIC', @@ -24,6 +25,7 @@ __all__ = ['meta', 'CDROM', 'Mirror', 'Autoinstall', + 'Owner', 'or_', ] @@ -82,6 +84,11 @@ autoinstalls_table = Table('autoinstalls', meta, Column('mirror', String, nullable=False), Column('arch', String, nullable=False)) +owners_table = Table('owners', meta, + Column('owner_id', String, primary_key=True, nullable=False), + Column('ram_quota_total', Integer, nullable=True), + Column('ram_quota_single', Integer, nullable=True)) + machine_access_table = Table('machine_access', meta, Column('machine_id', Integer, ForeignKey('machines.machine_id', ondelete='CASCADE'), nullable=False, index=True), Column('user', String, nullable=False, index=True), @@ -119,6 +126,8 @@ class Autoinstall(object): def __repr__(self): return "" % (self.autoinstall_id, self.description, self.type.type_id) +from owner import Owner + session.mapper(Machine, machine_table, properties={'nics': relation(NIC, backref="machine"), 'disks': relation(Disk, backref="machine"), @@ -132,6 +141,7 @@ session.mapper(Mirror, mirrors_table) session.mapper(CDROM, cdroms_table, properties={'mirror': relation(Mirror, backref="cdroms")}) session.mapper(Autoinstall, autoinstalls_table) +session.mapper(Owner, owners_table) def clear_cache(): """Clear sqlalchemy's cache diff --git a/python/database/owner.py b/python/database/owner.py new file mode 100755 index 0000000..59080bc --- /dev/null +++ b/python/database/owner.py @@ -0,0 +1,19 @@ +MAX_MEMORY_TOTAL = 512 +MAX_MEMORY_SINGLE = 512 +class Owner(object): + def __repr__(self): + return "" % (self.owner_id, self.ram_quota_total, self.ram_quota_single) + def getQuotas(owner): + owner_info = Owner.query().filter_by(owner_id=owner).first() + if owner_info != None: + quota_total = owner_info.ram_quota_total + if quota_total == None: + quota_total = MAX_MEMORY_TOTAL + quota_single = owner_info.ram_quota_single + if quota_single == None: + quota_single = MAX_MEMORY_SINGLE + else: + quota_total = MAX_MEMORY_TOTAL + quota_single = MAX_MEMORY_SINGLE + return (quota_total, quota_single) + getQuotas = staticmethod(getQuotas)