backend/server/handlers/app/packages.py | 192 ++++++++++--------------------
backend/server/handlers/xmlrpc/up2date.py | 141 ++++++----------------
2 files changed, 106 insertions(+), 227 deletions(-)
New commits:
commit 1df2095dd3e17bd7ad32719b1b3029336daaf3c6
Author: Michael Mraka <michael.mraka(a)redhat.com>
Date: Wed Sep 1 23:39:34 2010 +0200
even getPackageChecksum() and getPackageChecksumBySession() can be merged into a
single function
made getPackageChecksum(), getPackageChecksumBySession(), getSourcePackageChecksum()
and getSourcePackageChecksumBySession() simple wrappers around getAnyChecksum()
diff --git a/backend/server/handlers/app/packages.py
b/backend/server/handlers/app/packages.py
index 925e0a3..da66d81 100644
--- a/backend/server/handlers/app/packages.py
+++ b/backend/server/handlers/app/packages.py
@@ -406,7 +406,7 @@ class Packages(RPC_Base):
return 0
- def getPackageChecksum(self, username, password, info, is_source = 0):
+ def getAnyChecksum(self, info, username = None, password = None, session = None,
is_source = 0):
""" returns checksum info of available packages
also does an existance check on the filesystem.
"""
@@ -421,16 +421,30 @@ class Packages(RPC_Base):
null_org=1
else:
null_org=None
- org_id, force = rhnPackageUpload.authenticate(username, password,
+
+ if not session:
+ org_id, force = rhnPackageUpload.authenticate(username, password,
channels=channels,
null_org=null_org,
force=force)
+ else:
+ try:
+ org_id, force = rhnPackageUpload.authenticate_session(
+ session, channels=channels, null_org=null_org, force=force)
+ except rhnSession.InvalidSessionError:
+ raise rhnFault(33)
+ except rhnSession.ExpiredSessionError:
+ raise rhnFault(34)
+
if is_source:
ret = self._getSourcePackageChecksum(org_id, pkg_infos)
else:
ret = self._getPackageChecksum(org_id, pkg_infos)
return ret
+ def getPackageChecksum(self, username, password, info):
+ return self.getAnyChecksum(info, username = username, password = password)
+
def getPackageMD5sum(self, username, password, info):
""" bug#177762 gives md5sum info of available packages.
also does an existance check on the filesystem.
@@ -440,31 +454,8 @@ class Packages(RPC_Base):
return self._Checksum2MD5sum_list(
self.getPackageChecksum(username, password, info))
- def getPackageChecksumBySession(self, session_string, info, is_source = 0):
- log_debug(3)
-
- pkg_infos = info.get('packages')
- channels = info.get('channels', [])
- force = info.get('force', 0)
- orgid = info.get('org_id')
-
- try:
- if orgid == 'null':
- null_org=1
- else:
- null_org=None
- org_id, force = rhnPackageUpload.authenticate_session(
- session_string, channels=channels, null_org=null_org, force=force)
- except rhnSession.InvalidSessionError:
- raise rhnFault(33)
- except rhnSession.ExpiredSessionError:
- raise rhnFault(34)
-
- if is_source:
- ret = self._getSourcePackageChecksum(org_id, pkg_infos)
- else:
- ret = self._getPackageChecksum(org_id, pkg_infos)
- return ret
+ def getPackageChecksumBySession(self, session_string, info):
+ return self.getAnyChecksum(info, session = session_string)
def getPackageMD5sumBySession(self, session_string, info):
log_debug(3)
@@ -578,7 +569,7 @@ class Packages(RPC_Base):
return row_list
def getSourcePackageChecksum(self, username, password, info):
- return getPackageChecksum(self, username, password, info, is_source = 1)
+ return self.getAnyChecksum(info, username = username, password = password,
is_source = 1)
def getSourcePackageMD5sum(self, username, password, info):
log_debug(3)
@@ -587,7 +578,7 @@ class Packages(RPC_Base):
self.getSourcePackageChecksum(username, password, info))
def getSourcePackageChecksumBySession(self, session_string, info):
- return getPackageChecksumBySession(self, session_string, info, is_source = 1)
+ return self.getAnyChecksum(info, session = session_string, is_source = 1)
def getSourcePackageMD5sumBySession(self, session_string, info):
log_debug(3)
commit 1ed21aa77bdfcb6cb102481cf8c8bda78b718504
Author: Michael Mraka <michael.mraka(a)redhat.com>
Date: Wed Sep 1 23:20:08 2010 +0200
fixed typo and syntax error
diff --git a/backend/server/handlers/app/packages.py
b/backend/server/handlers/app/packages.py
index ad6af9d..925e0a3 100644
--- a/backend/server/handlers/app/packages.py
+++ b/backend/server/handlers/app/packages.py
@@ -462,7 +462,7 @@ class Packages(RPC_Base):
if is_source:
ret = self._getSourcePackageChecksum(org_id, pkg_infos)
- else
+ else:
ret = self._getPackageChecksum(org_id, pkg_infos)
return ret
@@ -587,7 +587,7 @@ class Packages(RPC_Base):
self.getSourcePackageChecksum(username, password, info))
def getSourcePackageChecksumBySession(self, session_string, info):
- return getPackageChecksumBySession(self, session_string, info, source = 1)
+ return getPackageChecksumBySession(self, session_string, info, is_source = 1)
def getSourcePackageMD5sumBySession(self, session_string, info):
log_debug(3)
commit c678b742db06f6b5d204cfefd46882d4f1d3beb1
Author: Michael Mraka <michael.mraka(a)redhat.com>
Date: Wed Sep 1 23:17:57 2010 +0200
merged getSourcePackageChecksum() into getPackageChecksum()
they only differed in returning value
diff --git a/backend/server/handlers/app/packages.py
b/backend/server/handlers/app/packages.py
index 72934f3..ad6af9d 100644
--- a/backend/server/handlers/app/packages.py
+++ b/backend/server/handlers/app/packages.py
@@ -406,7 +406,7 @@ class Packages(RPC_Base):
return 0
- def getPackageChecksum(self, username, password, info):
+ def getPackageChecksum(self, username, password, info, is_source = 0):
""" returns checksum info of available packages
also does an existance check on the filesystem.
"""
@@ -425,7 +425,11 @@ class Packages(RPC_Base):
channels=channels,
null_org=null_org,
force=force)
- return self._getPackageChecksum(org_id, pkg_infos)
+ if is_source:
+ ret = self._getSourcePackageChecksum(org_id, pkg_infos)
+ else:
+ ret = self._getPackageChecksum(org_id, pkg_infos)
+ return ret
def getPackageMD5sum(self, username, password, info):
""" bug#177762 gives md5sum info of available packages.
@@ -574,25 +578,7 @@ class Packages(RPC_Base):
return row_list
def getSourcePackageChecksum(self, username, password, info):
- """ Uploads an RPM package """
- log_debug(3)
-
- pkg_infos = info.get('packages')
- channels = info.get('channels', [])
- force = info.get('force', 0)
- orgid = info.get('org_id')
-
- if orgid == 'null':
- org_id, force = rhnPackageUpload.authenticate(username, password,
- channels=channels,
- null_org=1,
- force=force)
- else:
- org_id, force = rhnPackageUpload.authenticate(username, password,
- channels=channels,
- force=force)
-
- return self._getSourcePackageChecksum(org_id, pkg_infos)
+ return getPackageChecksum(self, username, password, info, is_source = 1)
def getSourcePackageMD5sum(self, username, password, info):
log_debug(3)
commit f2733e7ea9df14194fc36d7bb0583ac3c0f2b9b9
Author: Michael Mraka <michael.mraka(a)redhat.com>
Date: Wed Sep 1 23:14:20 2010 +0200
merged getSourcePackageChecksumBySession() to getPackageChecksumBySession()
they differed only in returning value
diff --git a/backend/server/handlers/app/packages.py
b/backend/server/handlers/app/packages.py
index 67d30bf..72934f3 100644
--- a/backend/server/handlers/app/packages.py
+++ b/backend/server/handlers/app/packages.py
@@ -436,7 +436,7 @@ class Packages(RPC_Base):
return self._Checksum2MD5sum_list(
self.getPackageChecksum(username, password, info))
- def getPackageChecksumBySession(self, session_string, info):
+ def getPackageChecksumBySession(self, session_string, info, is_source = 0):
log_debug(3)
pkg_infos = info.get('packages')
@@ -456,7 +456,11 @@ class Packages(RPC_Base):
except rhnSession.ExpiredSessionError:
raise rhnFault(34)
- return self._getPackageChecksum(org_id, pkg_infos)
+ if is_source:
+ ret = self._getSourcePackageChecksum(org_id, pkg_infos)
+ else
+ ret = self._getPackageChecksum(org_id, pkg_infos)
+ return ret
def getPackageMD5sumBySession(self, session_string, info):
log_debug(3)
@@ -597,27 +601,8 @@ class Packages(RPC_Base):
self.getSourcePackageChecksum(username, password, info))
def getSourcePackageChecksumBySession(self, session_string, info):
- log_debug(3)
-
- pkg_infos = info.get('packages')
- channels = info.get('channels', [])
- force = info.get('force', 0)
- orgid = info.get('org_id')
-
- try:
- if orgid == 'null':
- null_org=1
- else:
- null_org=None
- org_id, force = rhnPackageUpload.authenticate_session(
- session_string, channels=channels, null_org=null_org, force=force)
- except rhnSession.InvalidSessionError:
- raise rhnFault(33)
- except rhnSession.ExpiredSessionError:
- raise rhnFault(34)
+ return getPackageChecksumBySession(self, session_string, info, source = 1)
- return self._getSourcePackageChecksum(org_id, pkg_infos)
-
def getSourcePackageMD5sumBySession(self, session_string, info):
log_debug(3)
self._MD5sum2Checksum_info(info)
commit c1fbab1dd1e9cf3af019b1ecd8088677d0a33b70
Author: Michael Mraka <michael.mraka(a)redhat.com>
Date: Thu Aug 12 17:02:05 2010 +0200
merged duplicated code into _get_package_checksum()
diff --git a/backend/server/handlers/app/packages.py
b/backend/server/handlers/app/packages.py
index 9d957a3..67d30bf 100644
--- a/backend/server/handlers/app/packages.py
+++ b/backend/server/handlers/app/packages.py
@@ -523,30 +523,30 @@ class Packages(RPC_Base):
})
h = rhnSQL.prepare(self._get_pkg_info_query % _checksum_sql_filter)
+ row_list[pkg] = self._get_package_checksum(h, query_args)
- h.execute(**query_args)
-
- row = h.fetchone_dict()
- if not row:
- row_list[pkg] = ''
- continue
-
- if row.has_key('path'):
- filePath = os.path.join(CFG.MOUNT_POINT, row['path'])
- if os.access(filePath, os.R_OK):
- if row.has_key('checksum'):
- row_list[pkg] = (row['checksum_type'],
row['checksum'])
- else:
- row_list[pkg] = 'on-disk'
+ return row_list
+
+ def _get_package_checksum(self, h, query_args):
+ h.execute(**query_args)
+ row = h.fetchone_dict()
+ if not row:
+ ret = ''
+ elif row.has_key('path'):
+ filePath = os.path.join(CFG.MOUNT_POINT, row['path'])
+ if os.access(filePath, os.R_OK):
+ if row.has_key('checksum'):
+ ret = (row['checksum_type'], row['checksum'])
else:
- # Package not found on the filesystem
- log_error("Package not found", filePath)
- row_list[pkg] = ''
+ ret = 'on-disk'
else:
- log_error("Package path null for package", filePath)
- row_list[pkg] = ''
-
- return row_list
+ # Package not found on the filesystem
+ log_error("Package not found", filePath)
+ ret = ''
+ else:
+ log_error("Package path null for package", filePath)
+ ret = ''
+ return ret
def _MD5sum2Checksum_info(self, info):
log_debug(5)
@@ -651,29 +651,8 @@ class Packages(RPC_Base):
h = rhnSQL.prepare(statement)
row_list = {}
for pkg in pkg_infos.keys():
-
- h.execute(name=pkg, orgid = org_id )
-
- row = h.fetchone_dict()
- if not row:
- row_list[pkg] = ''
- continue
-
- if row.has_key('path'):
- filePath = os.path.join(CFG.MOUNT_POINT, row['path'])
- if os.access(filePath, os.R_OK):
- if row.has_key('checksum'):
- row_list[pkg] = (row['checksum_type'],
row['checksum'])
- else:
- row_list[pkg] = 'on-disk'
- else:
- # Package not found on the filesystem
- log_error("Package not found", filePath)
- row_list[pkg] = ''
- else:
- log_error("Package path null for package", filePath)
- row_list[pkg] = ''
-
+ row_list[pkg] = self._get_package_checksum(h,
+ {'name':pkg, 'orgid': org_id})
return row_list
def auth(login, password):
commit 9ba82a505af07681d98cad9194ecad7ed1f4d76e
Author: Michael Mraka <michael.mraka(a)redhat.com>
Date: Thu Aug 12 16:49:08 2010 +0200
reordered commands to put checksum stuff together
diff --git a/backend/server/handlers/app/packages.py
b/backend/server/handlers/app/packages.py
index a1a7789..9d957a3 100644
--- a/backend/server/handlers/app/packages.py
+++ b/backend/server/handlers/app/packages.py
@@ -500,14 +500,6 @@ class Packages(RPC_Base):
for pkg in pkg_infos.keys():
pkg_info = pkg_infos[pkg]
- _checksum_sql_filter = ""
- if pkg_info.has_key('checksum') and CFG.ENABLE_NVREA:
- checksum_exists = 1
- _checksum_sql_filter = """and c.checksum = :checksum
- and c.checksum_type =
:checksum_type"""
-
- h = rhnSQL.prepare(self._get_pkg_info_query % _checksum_sql_filter)
-
pkg_epoch = None
if pkg_info['epoch'] != '':
pkg_epoch = pkg_info['epoch']
@@ -521,12 +513,17 @@ class Packages(RPC_Base):
'orgid ': org_id,
}
- if checksum_exists:
+ _checksum_sql_filter = ""
+ if pkg_info.has_key('checksum') and CFG.ENABLE_NVREA:
+ _checksum_sql_filter = """and c.checksum = :checksum
+ and c.checksum_type =
:checksum_type"""
query_args.update({
'checksum_type': pkg_info['checksum_type'],
'checksum': pkg_info['checksum'],
})
+ h = rhnSQL.prepare(self._get_pkg_info_query % _checksum_sql_filter)
+
h.execute(**query_args)
row = h.fetchone_dict()
commit 5f0d45c3ceedaa4caec6fdbcf0f1f2093e8f4680
Author: Michael Mraka <michael.mraka(a)redhat.com>
Date: Thu Aug 12 16:44:58 2010 +0200
merged 2 calls with just different arguments
diff --git a/backend/server/handlers/app/packages.py
b/backend/server/handlers/app/packages.py
index cdcfa9e..a1a7789 100644
--- a/backend/server/handlers/app/packages.py
+++ b/backend/server/handlers/app/packages.py
@@ -512,23 +512,23 @@ class Packages(RPC_Base):
if pkg_info['epoch'] != '':
pkg_epoch = pkg_info['epoch']
+ query_args = {
+ 'pkg_name': pkg_info['name'],
+ 'pkg_epoch': pkg_epoch,
+ 'pkg_version': pkg_info['version'],
+ 'pkg_rel': pkg_info['release'],
+ 'pkg_arch': pkg_info['arch'],
+ 'orgid ': org_id,
+ }
+
if checksum_exists:
- h.execute(pkg_name=pkg_info['name'],
- pkg_epoch=pkg_epoch,
- pkg_version=pkg_info['version'],
- pkg_rel=pkg_info['release'],
- pkg_arch=pkg_info['arch'],
- orgid = org_id,
- checksum_type = pkg_info['checksum_type'],
- checksum = pkg_info['checksum'])
- else:
- h.execute(pkg_name=pkg_info['name'],
- pkg_epoch=pkg_epoch,
- pkg_version=pkg_info['version'],
- pkg_rel=pkg_info['release'],
- pkg_arch=pkg_info['arch'],
- orgid = org_id )
+ query_args.update({
+ 'checksum_type': pkg_info['checksum_type'],
+ 'checksum': pkg_info['checksum'],
+ })
+ h.execute(**query_args)
+
row = h.fetchone_dict()
if not row:
row_list[pkg] = ''
commit 64355c4e10fe5656164ff54835fef465368f44ca
Author: Michael Mraka <michael.mraka(a)redhat.com>
Date: Mon Oct 25 22:05:28 2010 +0200
moved X-RHN-Action stuff into one place
diff --git a/backend/server/handlers/xmlrpc/up2date.py
b/backend/server/handlers/xmlrpc/up2date.py
index 7311b9a..b34fc15 100644
--- a/backend/server/handlers/xmlrpc/up2date.py
+++ b/backend/server/handlers/xmlrpc/up2date.py
@@ -64,6 +64,12 @@ class Up2date(rhnHandler):
self.functions.append('solveDependencies_arch')
self.functions.append('solveDependencies_with_limits')
+ def auth_system(self, action, system_id):
+ # Stuff the action in the headers:
+ transport = rhnFlags.get('outputTransportOptions')
+ transport['X-RHN-Action'] = action
+ return rhnHandler.auth_system(self, system_id)
+
def login(self, system_id, extra_data={}):
""" Clients v2+
Log in routine.
@@ -74,7 +80,7 @@ class Up2date(rhnHandler):
# Authenticate the system certificate. We need the user record
# to generate the tokens
self.load_user = 1
- server = self.auth_system(system_id)
+ server = self.auth_system('login', system_id)
# log the entry
log_debug(1, self.server_id)
# Update the capabilities list
@@ -125,7 +131,6 @@ class Up2date(rhnHandler):
# Duplicate these values in the headers so that the proxy can
# intercept and cache them without parseing the xmlrpc.
transport = rhnFlags.get('outputTransportOptions')
- transport['X-RHN-Action'] = 'login'
for k, v in loginDict.items():
# Special case for channels
if string.lower(k) == string.lower('X-RHN-Auth-Channels'):
@@ -144,11 +149,8 @@ class Up2date(rhnHandler):
def listChannels(self, system_id):
""" Clients v2+ """
log_debug(5, system_id)
- # Stuff the action in the headers:
- transport = rhnFlags.get('outputTransportOptions')
- transport['X-RHN-Action'] = 'listChannels'
# Authenticate the system certificate
- self.auth_system(system_id)
+ self.auth_system('listChannels', system_id)
# log the entry
log_debug(1, self.server_id)
channelList = rhnChannel.channels_for_server(self.server_id)
@@ -158,11 +160,8 @@ class Up2date(rhnHandler):
def subscribeChannels(self, system_id, channelNames, username, passwd):
""" Clients v2+ """
log_debug(5, system_id, channelNames, username, passwd)
- # Stuff the action in the headers:
- transport = rhnFlags.get('outputTransportOptions')
- transport['X-RHN-Action'] = 'subscribeChannel'
# Authenticate the system certificate
- self.auth_system(system_id)
+ self.auth_system('subscribeChannel', system_id)
# log the entry
log_debug(1, self.server_id, channelNames)
for channelName in channelNames:
@@ -174,11 +173,8 @@ class Up2date(rhnHandler):
def unsubscribeChannels(self, system_id, channelNames, username, passwd):
""" Clients v2+ """
log_debug(3)
- # Stuff the action in the headers:
- transport = rhnFlags.get('outputTransportOptions')
- transport['X-RHN-Action'] = 'unsubscribeChannel'
# Authenticate the system certificate
- self.auth_system(system_id)
+ self.auth_system('unsubscribeChannel', system_id)
# log the entry
log_debug(1, self.server_id, channelNames)
for channelName in channelNames:
@@ -195,12 +191,9 @@ class Up2date(rhnHandler):
"""
log_debug(5, system_id)
# Authenticate the system certificate
- self.auth_system(system_id)
+ self.auth_system('listall', system_id)
# log the entry
log_debug(1, self.server_id)
- # Stuff the action in the headers:
- transport = rhnFlags.get('outputTransportOptions')
- transport['X-RHN-Action'] = 'listall'
# and now call into rhnChannel to find the data
return rhnChannel.list_packages_for_server(self.server_id)
@@ -213,12 +206,9 @@ class Up2date(rhnHandler):
"""
log_debug(5, system_id)
# Authenticate the system certificate
- self.auth_system(system_id)
+ self.auth_system('listall_size', system_id)
# log the entry
log_debug(1, self.server_id)
- # Stuff the action in the headers:
- transport = rhnFlags.get('outputTransportOptions')
- transport['X-RHN-Action'] = 'listall_size'
# call into rhnChannel to find the data
return rhnChannel.list_packages_for_server(self.server_id,
need_size = 1)
@@ -248,7 +238,7 @@ class Up2date(rhnHandler):
for p in pkgList:
req_list.append(check_package_spec(p))
# Authenticate the system certificate
- server = self.auth_system(system_id)
+ server = self.auth_system('header', system_id)
# log the entry
log_debug(1, self.server_id, "items: %d" % len(req_list))
@@ -269,10 +259,6 @@ class Up2date(rhnHandler):
rpmHeaders.append(rpclib.xmlrpclib.Binary(h.unload()))
del h
- # Stuff the action in the headers:
- transport = rhnFlags.get('outputTransportOptions')
- transport['X-RHN-Action'] = 'header'
-
# Reset the flag for the proxy download accelerator
# This gets set by default in rhnPackage
rhnFlags.set("Download-Accelerator-Path", None)
@@ -294,17 +280,13 @@ class Up2date(rhnHandler):
# Authenticate the system certificate and set the QoS data
# according to the user type
self.set_qos = 1
- server = self.auth_system(system_id)
+ server = self.auth_system('package', system_id)
# log the entry (avoiding to fill the log in case of abuse)
log_debug(1, self.server_id, str(package)[:100])
filePath = rhnPackage.get_package_path_compat_arches(self.server_id,
package, server.archname)
-
- # Stuff the action in the headers:
- transport = rhnFlags.get('outputTransportOptions')
- transport['X-RHN-Action'] = "package"
return rpclib.File(open(filePath, "r"), name=filePath)
@@ -320,17 +302,13 @@ class Up2date(rhnHandler):
# Authenticate the system certificate and set the QoS data
# according to the user type
self.set_qos = 1
- server = self.auth_system(system_id)
+ server = self.auth_system('source_package', system_id)
# log the entry (avoiding to fill the log in case of abuse)
log_debug(1, self.server_id, str(package)[:100])
filePath = rhnPackage.get_source_package_path_by_nvre(self.server_id,
package)
-
- # Stuff the action in the headers:
- transport = rhnFlags.get('outputTransportOptions')
- transport['X-RHN-Action'] = "source_package"
return rpclib.File(open(filePath, "r"), name=filePath)
@@ -344,17 +322,13 @@ class Up2date(rhnHandler):
# Authenticate the system certificate and set the QoS data
# according to the user type
self.set_qos = 1
- server = self.auth_system(system_id)
+ server = self.auth_system('source_package_by_name', system_id)
# log the entry (avoiding to fill the log in case of abuse)
log_debug(1, self.server_id, str(filename)[:100])
filePath = rhnPackage.get_source_package_path_by_name(self.server_id,
filename)
-
- # Stuff the action in the headers:
- transport = rhnFlags.get('outputTransportOptions')
- transport['X-RHN-Action'] = "source_package_by_name"
return rpclib.File(open(filePath, "r"), name=filePath)
@@ -411,12 +385,9 @@ class Up2date(rhnHandler):
"""
log_debug(5, system_id, summary, body)
# Authenticate the system certificate
- server = self.auth_system(system_id)
+ server = self.auth_system('history', system_id)
# log the entry
log_debug(1, self.server_id)
- # Stuff the action in the headers:
- transport = rhnFlags.get('outputTransportOptions')
- transport['X-RHN-Action'] = 'history'
# XXX: Probably this should be a non fatal error...
server.add_history(summary, body)
server.save_history()
@@ -445,11 +416,8 @@ class Up2date(rhnHandler):
if not deps:
return []
# Authenticate the system certificate
- server = self.auth_system(system_id)
+ server = self.auth_system(action, system_id)
log_debug(1, self.server_id, action, "items: %d" % len(deps))
- # Stuff the action in the headers:
- transport = rhnFlags.get('outputTransportOptions')
- transport['X-RHN-Action'] = action
return deps
def __solveDep(self, system_id, deps, action, clientVersion):
commit 62d91f9566a9f3ba88365dde88a5b5a030c41c22
Author: Michael Mraka <michael.mraka(a)redhat.com>
Date: Thu Aug 12 15:56:38 2010 +0200
moved duplicated code to a function
diff --git a/backend/server/handlers/xmlrpc/up2date.py
b/backend/server/handlers/xmlrpc/up2date.py
index 006a4eb..7311b9a 100644
--- a/backend/server/handlers/xmlrpc/up2date.py
+++ b/backend/server/handlers/xmlrpc/up2date.py
@@ -425,12 +425,12 @@ class Up2date(rhnHandler):
# --- PRIVATE METHODS ---
- def __solveDep(self, system_id, deps, action, clientVersion):
+ def __solveDep_prepare(self, system_id, deps, action, clientVersion):
""" Response for clients:
version 1: list
version 2: hash
"""
- log_debug(5, system_id, deps, action, clientVersion)
+ log_debug(7, system_id, deps, action, clientVersion)
faultString = _("Invalid value %s (%s)")
if type(deps) not in (ListType, TupleType):
log_error("Invalid argument type", type(deps))
@@ -447,13 +447,22 @@ class Up2date(rhnHandler):
# Authenticate the system certificate
server = self.auth_system(system_id)
log_debug(1, self.server_id, action, "items: %d" % len(deps))
- # Solve dependencies
- result = rhnDependency.solve_dependencies(self.server_id,
- deps, clientVersion)
-
# Stuff the action in the headers:
transport = rhnFlags.get('outputTransportOptions')
transport['X-RHN-Action'] = action
+ return deps
+
+ def __solveDep(self, system_id, deps, action, clientVersion):
+ """ Response for clients:
+ version 1: list
+ version 2: hash
+ """
+ log_debug(5, system_id, deps, action, clientVersion)
+ result = self.__solveDep_prepare(system_id, deps, action, clientVersion)
+ if result:
+ # Solve dependencies
+ result = rhnDependency.solve_dependencies(self.server_id,
+ result, clientVersion)
return result
def __solveDep_arch(self, system_id, deps, action, clientVersion):
@@ -462,29 +471,11 @@ class Up2date(rhnHandler):
version 2: hash
"""
log_debug(5, system_id, deps, action, clientVersion)
- faultString = _("Invalid value %s (%s)")
- if type(deps) not in (ListType, TupleType):
- log_error("Invalid argument type", type(deps))
- raise rhnFault(30, faultString % (deps, type(deps)))
- for dep in deps:
- if type(dep) is not StringType:
- log_error("Invalid dependency member", type(dep))
- raise rhnFault(30, faultString % (dep, type(dep)))
- # Ignore empty strings
- deps = filter(len, deps)
- # anything left to do?
- if not deps:
- return []
- # Authenticate the system certificate
- server = self.auth_system(system_id)
- log_debug(1, self.server_id, action, "items: %d" % len(deps))
- # Solve dependencies
- result = rhnDependency.solve_dependencies_arch(self.server_id,
- deps, clientVersion)
-
- # Stuff the action in the headers:
- transport = rhnFlags.get('outputTransportOptions')
- transport['X-RHN-Action'] = action
+ result = self.__solveDep_prepare(system_id, deps, action, clientVersion)
+ if result:
+ # Solve dependencies
+ result = rhnDependency.solve_dependencies_arch(self.server_id,
+ result, clientVersion)
return result
@@ -494,29 +485,11 @@ class Up2date(rhnHandler):
version 2: hash
"""
log_debug(5, system_id, deps, action, clientVersion)
- faultString = _("Invalid value %s (%s)")
- if type(deps) not in (ListType, TupleType):
- log_error("Invalid argument type", type(deps))
- raise rhnFault(30, faultString % (deps, type(deps)))
- for dep in deps:
- if type(dep) is not StringType:
- log_error("Invalid dependency member", type(dep))
- raise rhnFault(30, faultString % (dep, type(dep)))
- # Ignore empty strings
- deps = filter(len, deps)
- # anything left to do?
- if not deps:
- return []
- # Authenticate the system certificate
- server = self.auth_system(system_id)
- log_debug(1, self.server_id, action, "items: %d" % len(deps))
- # Solve dependencies
- result = rhnDependency.solve_dependencies_with_limits(self.server_id,
+ result = self.__solveDep_prepare(system_id, deps, action, clientVersion)
+ if result:
+ # Solve dependencies
+ result = rhnDependency.solve_dependencies_with_limits(self.server_id,
deps, clientVersion, all,
limit_operator, limit)
-
- # Stuff the action in the headers:
- transport = rhnFlags.get('outputTransportOptions')
- transport['X-RHN-Action'] = action
return result
def check_package_spec(package):