client/tools/rhnpush/uploadLib.py | 51 ++++++++++++++++++++------------------
1 file changed, 27 insertions(+), 24 deletions(-)
New commits:
commit 21e8133dfc50256e5a6034ff721d916678276d8d
Author: Miroslav Suchý <msuchy(a)redhat.com>
Date: Fri Jan 28 18:15:38 2011 +0100
648403 - on rhel4 we have no up2date_client rhnserver, on rhel4 revert to old michael
code
diff --git a/client/tools/rhnpush/uploadLib.py b/client/tools/rhnpush/uploadLib.py
index e43a0fc..a6e96ee 100644
--- a/client/tools/rhnpush/uploadLib.py
+++ b/client/tools/rhnpush/uploadLib.py
@@ -24,7 +24,11 @@ import struct
import xmlrpclib
from spacewalk.common import rhn_mpm
from spacewalk.common.checksum import getFileChecksum
-from up2date_client import rhnserver
+try:
+ from up2date_client import rhnserver
+ rhnserver_available = True
+except ImportError:
+ rhnserver_available = False
try:
from rhn import rpclib
@@ -710,32 +714,31 @@ def getServer(uri, proxy=None, username=None, password=None,
ca_chain=None):
s.add_trusted_cert(ca_chain)
return s
-def __hasCapability(self, capability, version=None):
- """Checks if the server supports a capability and optionally a
version.
- Returns True or False.
- Copy from client/rhel/rhn-client-tools/src/up2date_client/capabilities.py
- """
- assert version is None or str(version).isdigit()
-
- if not self.data.has_key(capability):
- return False
- if version:
- data = self.data[capability]
- if int(version) not in self.parseCapVersion(data['version']):
- return False
- return True
-
def exists_getPackageChecksumBySession(rpc_server):
""" check whether server supports getPackageChecksumBySession
function"""
- # unfortunatelly we do not have capability for getPackageChecksumBySession function,
- # but extended_profile in version 2 has been created just 2 months before
getPackageChecksumBySession
- # lets use it instead
- server = rhnserver.RhnServer()
- server._server = rpc_server
- try:
+ if rhnserver_available:
+ # unfortunatelly we do not have capability for getPackageChecksumBySession
function,
+ # but extended_profile in version 2 has been created just 2 months before
+ # getPackageChecksumBySession lets use it instead
+ server = rhnserver.RhnServer()
+ server._server = rpc_server
result =
server.capabilities.hasCapability('xmlrpc.packages.extended_profile', 2)
- except AttributeError: # workaround for rhel4
- result = __hasCapability(server.capabilities,
'xmlrpc.packages.extended_profile', 2)
+ else: # rhel4 has no rhnserver
+ result = True
+ try: # if server do not have this function we will create TB :(
+ raw_call(rpc_server.packages.getPackageChecksumBySession, '', {})
+ except xmlrpclib.Fault, e:
+ if e.faultCode in [-2, -33]:
+ # Fault -33: session token is invalid
+ # i.e. function exists but we supplied wrong data
+ # Fault -2 session is unknown - expected when empty
+ pass
+ elif e.faultCode == -1:
+ # Fault -1: function invalid
+ result = False
+ else:
+ # pass through anything else
+ raise
return result
# compare two package [n,v,r,e] tuples
Show replies by date