[Demi-commits] r79 - lib
John Morrissey
jwm-guest at costa.debian.org
Mon Apr 24 18:23:25 UTC 2006
Author: jwm-guest
Date: 2006-04-24 18:23:24 +0000 (Mon, 24 Apr 2006)
New Revision: 79
Modified:
lib/machine.py
Log:
- don't need apt_pkg here
- oops, don't keep *all* packages in each ideal machine, just iterate
through all of the ideal machine's dependencies (= machines which consider
the ideal machine *their* ideal machine) and store only the packages that
are installed. page loads are *much* faster. :-)
- update ideal machines each time now, not just once a day; it's fast enough
to do every time
- gracefully handle the corner case where a machine's ideal machine is None
Modified: lib/machine.py
===================================================================
--- lib/machine.py 2006-04-24 18:21:15 UTC (rev 78)
+++ lib/machine.py 2006-04-24 18:23:24 UTC (rev 79)
@@ -16,7 +16,7 @@
#
# $Id$
-import apt_pkg, md5, re
+import md5, re
from datetime import datetime, timedelta
# FIXME: this should be database-agnostic
from MySQLdb import IntegrityError
@@ -94,8 +94,6 @@
# Consider machines inactive after this many days.
INACTIVE_AFTER = 7
- # Update ideal machines after this many days.
- IDEAL_UPDATE_AFTER = 1
def __cmp__(self, other):
if other == None:
@@ -180,16 +178,23 @@
# We don't need to update anything else (aptPrefs, sources.list,
# etc.) since this is a fake machine.
- if datetime.now(demi.tz()) - self.lastCheckin < \
- timedelta(days = self.IDEAL_UPDATE_AFTER):
- return
-
if demi.aptCache == None:
demi.initApt()
+ depPkgs = []
+ for m in getAllMachines():
+ if m.ideal.hostname == self.hostname and \
+ m.hostname != self.hostname:
+ for pkgName in m.pkgVersions.keys():
+ depPkgs.append(pkgName)
+
idealPkgs = {}
idealRelationships = {}
- for package in demi.aptCache.Packages:
+ for pkgName in depPkgs:
+ try:
+ package = demi.aptCache[pkgName]
+ except:
+ continue
if not package.VersionList:
continue
@@ -484,6 +489,10 @@
def isPackageOutdated(self, pkgName):
"""Determine whether a given package is outdated."""
+ if self.ideal == None:
+ # No ideal machine? Consider the package up-to-date. Not ideal,
+ # but better than considering everything out-of-date.
+ return False
if demi.versionCompare(self.getPackageVersion(pkgName), self.ideal.getPackageVersion(pkgName)) < 0:
return True
return False
@@ -526,6 +535,9 @@
installation status.
"""
+ if self.ideal == None:
+ return {}
+
affected = self.binaryPackagesFor(dsa.package)
if affected == None:
# The DSA might not be for the source package, but for a
@@ -541,6 +553,8 @@
def sourcePackageFor(self, pkgName):
if self.hostname[-11:] != ".ideal.demi":
+ if not self.ideal:
+ return None
return self.ideal.sourcePackageFor(pkgName)
for source, binaries in self._srcToBinPkg.iteritems():
if pkgName in binaries:
@@ -549,6 +563,8 @@
def binaryPackagesFor(self, pkgName):
if self.hostname[-11:] != ".ideal.demi":
+ if not self.ideal:
+ return None
return self.ideal.binaryPackagesFor(pkgName)
if self._srcToBinPkg.has_key(pkgName):
return self._srcToBinPkg[pkgName]
More information about the Demi-commits
mailing list