Index: /trunk/packages/invirt-database/debian/changelog
===================================================================
--- /trunk/packages/invirt-database/debian/changelog	(revision 2212)
+++ /trunk/packages/invirt-database/debian/changelog	(revision 2213)
@@ -1,2 +1,10 @@
+invirt-database (0.1.9) unstable; urgency=low
+
+  * Make get*Quotas idempotent
+  * Move Owner import so that Owner can access session in
+    invirt.database.models
+
+ -- Quentin Smith <quentin@mit.edu>  Fri, 27 Feb 2009 14:17:53 -0500
+
 invirt-database (0.1.8) unstable; urgency=low
 
Index: /trunk/packages/invirt-database/python/database/models.py
===================================================================
--- /trunk/packages/invirt-database/python/database/models.py	(revision 2212)
+++ /trunk/packages/invirt-database/python/database/models.py	(revision 2213)
@@ -7,5 +7,4 @@
 
 from invirt.database import record
-from invirt.database.owner import Owner
 
 __all__ = ['meta',
@@ -127,4 +126,6 @@
     _identity_field = 'autoinstall_id'
 
+from invirt.database.owner import Owner
+
 session.mapper(Machine, machine_table,
               properties={'nics': relation(NIC, backref="machine"),
Index: /trunk/packages/invirt-database/python/database/owner.py
===================================================================
--- /trunk/packages/invirt-database/python/database/owner.py	(revision 2212)
+++ /trunk/packages/invirt-database/python/database/owner.py	(revision 2213)
@@ -1,3 +1,4 @@
 from invirt.database import record
+from invirt.database.models import session
 
 class Owner(record.Record):
@@ -18,20 +19,23 @@
     @classmethod
     def getMemoryQuotas(cls, owner):
-        owner_info = cls.query().filter_by(owner_id=owner).first()
+        owner_info = cls.query().get(owner)
         if owner_info == None:
             owner_info = cls(owner_id=owner)
+            session.expunge(owner_info)
         return (owner_info.get('ram_quota_total'), owner_info.get('ram_quota_single'))
 
     @classmethod
     def getDiskQuotas(cls, owner):
-        owner_info = cls.query().filter_by(owner_id=owner).first()
+        owner_info = cls.query().get(owner)
         if owner_info == None:
             owner_info = cls(owner_id=owner)
+            session.expunge(owner_info)
         return (owner_info.get('disk_quota_total'), owner_info.get('disk_quota_single'))
 
     @classmethod
     def getVMQuotas(cls, owner):
-        owner_info = cls.query().filter_by(owner_id=owner).first()
+        owner_info = cls.query().get(owner)
         if owner_info == None:
             owner_info = cls(owner_id=owner)
+            session.expunge(owner_info)
         return (owner_info.get('vms_quota_total'), owner_info.get('vms_quota_active'))
