backend/server/rhnServer/server_packages.py | 81 +++++-----
backend/server/rhnServer/server_solarispatches.py | 11 -
schema/spacewalk/common/tables/rhnServerPackage.sql | 3
schema/spacewalk/upgrade/spacewalk-schema-0.6-to-spacewalk-schema-0.7/005-rhnServerPackage_installed.sql | 3
4 files changed, 49 insertions(+), 49 deletions(-)
New commits:
commit 80cd4dd0ae45f573630098a1f2cbe60bf90ebf1f
Author: Michael Mraka <michael.mraka(a)redhat.com>
Date: Thu Oct 22 14:23:00 2009 +0200
449167 - load/store installtime from/to db
diff --git a/backend/server/rhnServer/server_packages.py b/backend/server/rhnServer/server_packages.py
index 756e3f3..fb396c1 100644
--- a/backend/server/rhnServer/server_packages.py
+++ b/backend/server/rhnServer/server_packages.py
@@ -19,6 +19,7 @@
#
import string
+import time
from types import DictType, TupleType
from common import log_debug, rhn_rpm, rhnFault
@@ -160,9 +161,9 @@ class Packages:
log_debug(4, sysid, len(alist), "added packages")
h = rhnSQL.prepare("""
insert into rhnServerPackage
- (server_id, name_id, evr_id, package_arch_id)
+ (server_id, name_id, evr_id, package_arch_id, installtime)
values (:sysid, LOOKUP_PACKAGE_NAME(:n), LOOKUP_EVR(:e, :v, :r),
- LOOKUP_PACKAGE_ARCH(:a)
+ LOOKUP_PACKAGE_ARCH(:a), TO_DATE(:instime, 'YYYY-MM-DD HH24:MI:SS')
)
""")
package_data = {
@@ -172,6 +173,8 @@ class Packages:
'r' : map(lambda a: a.r, alist),
'e' : map(lambda a: a.e, alist),
'a' : map(lambda a: a.a, alist),
+ 'instime' : map(lambda a: time.strftime('%Y-%m-%d %H:%M:%S',
+ time.localtime(a.installtime)), alist),
}
try:
h.execute_bulk(package_data)
@@ -224,13 +227,14 @@ class Packages:
# Now load packages
h = rhnSQL.prepare("""
select
- rpn.name n,
- rpe.version v,
- rpe.release r,
- rpe.epoch e,
+ rpn.name name,
+ rpe.version version,
+ rpe.release release,
+ rpe.epoch epoch,
sp.name_id,
sp.evr_id,
- sp.package_arch_id
+ sp.package_arch_id,
+ TO_CHAR(sp.installtime, 'YYYY-MM-DD HH24:MI:SS') installtime
from
rhnServerPackage sp,
rhnPackageName rpn,
@@ -245,13 +249,12 @@ class Packages:
t = h.fetchone_dict()
if not t:
break
- if t["e"] is None: t["e"] = ""
- package_arch_id = t["package_arch_id"]
- package_arch = package_arches_hash[package_arch_id]
- nvrea = (t['n'], t['v'], t['r'], t['e'], package_arch)
- self.__p[nvrea] = dbPackage(nvrea, real=1,
- name_id=t["name_id"], evr_id=t["evr_id"],
- package_arch_id=package_arch_id)
+ t['arch'] = package_arches_hash[t['package_arch_id']]
+ t['installtime'] = time.mktime(time.strptime(t['installtime'],
+ "%Y-%m-%d %H:%M:%S"))
+ p = dbPackage(t, real=1, name_id=t['name_id'], evr_id=t['evr_id'],
+ package_arch_id=t['package_arch_id'])
+ self.__p[p.nvrea] = p
log_debug(4, "Loaded %d packages for server %s" % (len(self.__p), sysid))
self.__loaded = 1
self.__changed = 0
commit 7296c432238d0f263e1ba31f56c077551109edad
Author: Michael Mraka <michael.mraka(a)redhat.com>
Date: Thu Oct 22 13:57:22 2009 +0200
449167 - added installtime to package
diff --git a/backend/server/rhnServer/server_packages.py b/backend/server/rhnServer/server_packages.py
index 8381de0..756e3f3 100644
--- a/backend/server/rhnServer/server_packages.py
+++ b/backend/server/rhnServer/server_packages.py
@@ -45,6 +45,8 @@ class dbPackage:
self.r = str(pdict['release'])
self.e = str(pdict['epoch'])
self.a = str(pdict['arch'])
+ if pdict.has_key('installtime'):
+ self.installtime = pdict['installtime']
# nvrea is a tuple; we can use tuple as dictionary keys since they are
# immutable
self.nvrea = (self.n, self.v, self.r, self.e, self.a)
commit b4e97f215aafad324ab59991acd0dff48e36d5e4
Author: Michael Mraka <michael.mraka(a)redhat.com>
Date: Thu Oct 22 13:55:24 2009 +0200
swallow get_nvrea into dbPackage
diff --git a/backend/server/rhnServer/server_packages.py b/backend/server/rhnServer/server_packages.py
index c45ca1f..8381de0 100644
--- a/backend/server/rhnServer/server_packages.py
+++ b/backend/server/rhnServer/server_packages.py
@@ -25,30 +25,26 @@ from common import log_debug, rhn_rpm, rhnFault
from server import rhnSQL, rhnLib
from server_lib import snapshot_server, check_entitlement
-def get_nvrea(entry):
- if type(entry) != DictType:
- return None
- if not entry.has_key('arch') or entry['arch'] is None:
- entry['arch'] = ""
- if string.lower(str(entry['epoch'])) == "(none)" or entry['epoch'] == None:
- entry['epoch'] = ""
- nvrea = []
- for k in ('name', 'version', 'release', 'epoch', 'arch'):
- if entry[k] == None:
- return None
- else:
- nvrea.append(str(entry[k]))
- return tuple(nvrea)
-
# A small class that helps us represent things about a
# database package. In this structure "real" means that we have an
# entry in the database for it.
class dbPackage:
- def __init__(self, plist, real = 0, name_id=None, evr_id=None,
+ def __init__(self, pdict, real = 0, name_id=None, evr_id=None,
package_arch_id=None):
- if not isinstance(plist, TupleType):
- plist = tuple(plist)
- self.n, self.v, self.r, self.e, self.a = plist
+ if type(pdict) != DictType:
+ return None
+ if not pdict.has_key('arch') or pdict['arch'] is None:
+ pdict['arch'] = ""
+ if string.lower(str(pdict['epoch'])) == "(none)" or pdict['epoch'] == None:
+ pdict['epoch'] = ""
+ for k in ('name', 'version', 'release', 'epoch', 'arch'):
+ if pdict[k] == None:
+ return None
+ self.n = str(pdict['name'])
+ self.v = str(pdict['version'])
+ self.r = str(pdict['release'])
+ self.e = str(pdict['epoch'])
+ self.a = str(pdict['arch'])
# nvrea is a tuple; we can use tuple as dictionary keys since they are
# immutable
self.nvrea = (self.n, self.v, self.r, self.e, self.a)
@@ -81,32 +77,32 @@ class Packages:
def add_package(self, sysid, entry):
log_debug(4, sysid, entry)
- p = get_nvrea(entry)
+ p = dbPackage(entry)
if p is None:
# Not a valid package spec
return -1
if not self.__loaded:
self.reload_packages_byid(sysid)
- if self.__p.has_key(p):
- self.__p[p].add()
+ if self.__p.has_key(p.nvrea):
+ self.__p[p.nvrea].add()
self.__changed = 1
return 0
- self.__p[p] = dbPackage(p)
+ self.__p[p.nvrea] = p
self.__changed = 1
return 0
# delete a package from the list
def delete_package(self, sysid, entry):
log_debug(4, sysid, entry)
- p = get_nvrea(entry)
+ p = dbPackage(entry)
if p is None:
# Not a valid package spec
return -1
if not self.__loaded:
self.reload_packages_byid(sysid)
- if self.__p.has_key(p):
+ if self.__p.has_key(p.nvrea):
log_debug(4, " Package deleted")
- self.__p[p].delete()
+ self.__p[p.nvrea].delete()
self.__changed = 1
# deletion is always successfull
return 0
diff --git a/backend/server/rhnServer/server_solarispatches.py b/backend/server/rhnServer/server_solarispatches.py
index acee80a..90aa112 100644
--- a/backend/server/rhnServer/server_solarispatches.py
+++ b/backend/server/rhnServer/server_solarispatches.py
@@ -19,11 +19,7 @@
from common import log_debug
from server import rhnSQL
-from server_packages import get_nvrea
-
-# globals ----------------------------------------------------------------
-
-NAME, VER, REL, EPOCH, ARCH = (0, 1, 2, 3, 4)
+from server_packages import dbPackage
# functions --------------------------------------------------------------
@@ -31,7 +27,7 @@ def get_package_id(pkg):
"""Lookup a package id from rhnPackage in the database,
Return the id or return None if the package is not found"""
- nvrea = get_nvrea(pkg)
+ p = dbPackage(entry)
query = """SELECT id FROM rhnPackage
WHERE name_id=LOOKUP_PACKAGE_NAME(:name)
@@ -40,8 +36,7 @@ def get_package_id(pkg):
handle = rhnSQL.prepare(query)
- handle.execute(name=nvrea[NAME], epoch=nvrea[EPOCH], ver=nvrea[VER],
- rel=nvrea[REL], arch=nvrea[ARCH])
+ handle.execute(name=p.n, epoch=p.e, ver=p.v, rel=p.r, arch=p.a)
row = handle.fetchone_dict() or {}
commit d05e73fa00ae42460a2267cefd2a3f05990048dd
Author: Michael Mraka <michael.mraka(a)redhat.com>
Date: Thu Oct 22 11:23:33 2009 +0200
449167 - added column for installation date/time
diff --git a/schema/spacewalk/common/tables/rhnServerPackage.sql b/schema/spacewalk/common/tables/rhnServerPackage.sql
index b500019..808c27d 100644
--- a/schema/spacewalk/common/tables/rhnServerPackage.sql
+++ b/schema/spacewalk/common/tables/rhnServerPackage.sql
@@ -26,7 +26,8 @@ CREATE TABLE rhnServerPackage
package_arch_id NUMBER
REFERENCES rhnPackageArch (id),
created DATE
- DEFAULT (sysdate) NOT NULL
+ DEFAULT (sysdate) NOT NULL,
+ installtime DATE NOT NULL
)
TABLESPACE [[server_package_tablespace]]
ENABLE ROW MOVEMENT
diff --git a/schema/spacewalk/upgrade/spacewalk-schema-0.6-to-spacewalk-schema-0.7/005-rhnServerPackage_installed.sql b/schema/spacewalk/upgrade/spacewalk-schema-0.6-to-spacewalk-schema-0.7/005-rhnServerPackage_installed.sql
new file mode 100644
index 0000000..092ef8c
--- /dev/null
+++ b/schema/spacewalk/upgrade/spacewalk-schema-0.6-to-spacewalk-schema-0.7/005-rhnServerPackage_installed.sql
@@ -0,0 +1,3 @@
+ALTER TABLE rhnServerPackage
+ ADD installtime DATE NOT NULL;
+