Bug 562644

Summary: Server on Fedora 12 doesn't send capabilities
Product: [Community] Spacewalk Reporter: Michael Mráka <mmraka>
Component: ServerAssignee: Michael Mráka <mmraka>
Status: CLOSED CURRENTRELEASE QA Contact: Red Hat Satellite QA List <satqe-list>
Severity: medium Docs Contact:
Priority: urgent    
Version: 0.8   
Target Milestone: ---   
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2010-02-16 12:56:24 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 543511    

Description Michael Mráka 2010-02-07 20:04:55 UTC
Description of problem:
Doing spacewalk 0.8 release test I failed to register F12 and F11 clients to F12 server.
Registering to F12 client to RHEL5 server or RHEL5 client to F12 server works.

Version-Release number of selected component (if applicable):
server:
spacewalk-backend-0.8.43-1.fc12.noarch
client:
yum-rhn-plugin-0.8.5-1.fc11.noarch
rhn-client-tools-0.8.10-1.fc11.i586

How reproducible:
always

Steps to Reproduce:
1. setup spacewalk server on Fedora 12
2. register Fedora 12 client to the server
3.
  
Actual results:
# rhnreg_ks --server http://hp-z200-05.rhts.eng.bos.redhat.com/XMLRPC --activationkey 1-fedora11-i386 --force
An error has occurred:

Error Class Code: 21
Error Class Info: Invalid arguments passed to function.
Explanation: 
     An error has occurred while processing your request. If this problem
     persists please enter a bug report at bugzilla.redhat.com.
     If you choose to submit the bug report, please be sure to include
     details of what you were trying to do when this error occurred and
     details on how to reproduce this problem.

See /var/log/up2date for more information

/varlog/up2date:
Traceback (most recent call last):
  File "/usr/sbin/rhnreg_ks", line 218, in <module>
    cli.run()
  File "/usr/share/rhn/up2date_client/rhncli.py", line 66, in run
    sys.exit(self.main() or 0)
  File "/usr/sbin/rhnreg_ks", line 162, in main
    rhnreg.sendPackages(systemId, packageList)
  File "/usr/share/rhn/up2date_client/rhnreg.py", line 614, in sendPackages
    s.registration.add_packages(systemId, packageList)
  File "/usr/share/rhn/up2date_client/rhnserver.py", line 52, in __call__
    raise self.__exception_from_fault(f)
up2date_client.up2dateErrors.CommunicationError: Error communicating with server. The message was:

Error Class Code: 21
Error Class Info: Invalid arguments passed to function.
Explanation: 
     An error has occurred while processing your request. If this problem
     persists please enter a bug report at bugzilla.redhat.com.
     If you choose to submit the bug report, please be sure to include
     details of what you were trying to do when this error occurred and
     details on how to reproduce this problem.

On server side:
[root@hp-z200-05 ~]# tail -f /var/log/rhn/rhn_server_xmlrpc.log
2010/02/07 14:54:03 -04:00 7270 10.10.76.130: xmlrpc/registration._normalize_packages('ERROR', 'Invalid package spec for extended_profile >= 2', <type 'list'>, 'len = 4')

Expected results:
registration works

Additional info:
Server capabilities received on client from F12 server:
 {'xmlrpc.login.extra_data': {'version': '1', 'value': '1'}}
while from RHEL5 server:
{'registration.finish_message': {'version': '1', 'value': '1'}, 'registration.remaining_subscriptions': {'version': '1', 'value': '1'}, 'registration.update_contact_info': {'version': '1', 'value': '1'}, 'applet.has_base_channel': {'version': '1', 'value': '1'}, 'registration.smbios': {'version': '1', 'value': '1'}, 'registration.extended_update_support': {'version': '1', 'value': '1'}, 'registration.register_osad': {'version': '1', 'value': '1'}, 'rhncfg.content.base64_decode': {'version': '1', 'value': '1'}, 'rhncfg.filetype.directory': {'version': '1', 'value': '1'}, 'registration.delta_packages': {'version': '1', 'value': '1'}, 'xmlrpc.packages.extended_profile': {'version': '1-2', 'value': '1'}, 'xmlrpc.login.extra_data': {'version': '1', 'value': '1'}}

Registration fails 'cause of missing 'xmlrpc.packages.extended_profile': {'version': '1-2', 'value': '1'}.
{'xmlrpc.login.extra_data': {'version': '1', 'value': '1'}}

Comment 1 Michael Mráka 2010-02-10 14:53:17 UTC
So I added log messages to apacheRequest.response() function (lines 351 amd 359 of server/apacheRequest.py) and the difference is:

RHEL5 server:
2010/02/10 14:42:05 +02:00 11814 10.10.76.130: server/apacheRequest.response('output.headers', {'content-length': '121', 'x-rhn-server-capability': ['registration.finish_message(1)=1', 'registration.remaining_subscriptions(1)=1', 'registration.update_contact_info(1)=1', 'applet.has_base_channel(1)=1', 'registration.smbios(1)=1', 'registration.extended_update_support(1)=1', 'rhncfg.filetype.directory(1)=1', 'rhncfg.content.base64_decode(1)=1', 'registration.register_osad(1)=1', 'registration.delta_packages(1)=1', 'xmlrpc.packages.extended_profile(1-2)=1', 'xmlrpc.login.extra_data(1)=1'], 'x-rhn-proxy-version': '0', 'x-transport-info': 'Extended Capabilities Transport (C) Red Hat, Inc (version $Revision$)', 'x-rhn-client-version': '1'})
2010/02/10 14:42:05 +02:00 11814 10.10.76.130: server/apacheRequest.response('self.req.headers_out', {'X-RHN-Client-Version': '1', 'X-Transport-Info': 'Extended Capabilities Transport (C) Red Hat, Inc (version $Revision$)', 'X-RHN-Proxy-Version': '0', 'X-RHN-Server-Capability': 'xmlrpc.login.extra_data(1)=1', 'X-RHN-Server-Capability': 'xmlrpc.packages.extended_profile(1-2)=1', 'X-RHN-Server-Capability': 'registration.delta_packages(1)=1', 'X-RHN-Server-Capability': 'registration.register_osad(1)=1', 'X-RHN-Server-Capability': 'rhncfg.content.base64_decode(1)=1', 'X-RHN-Server-Capability': 'rhncfg.filetype.directory(1)=1', 'X-RHN-Server-Capability': 'registration.extended_update_support(1)=1', 'X-RHN-Server-Capability': 'registration.smbios(1)=1', 'X-RHN-Server-Capability': 'applet.has_base_channel(1)=1', 'X-RHN-Server-Capability': 'registration.update_contact_info(1)=1', 'X-RHN-Server-Capability': 'registration.remaining_subscriptions(1)=1', 'X-RHN-Server-Capability': 'registration.finish_message(1)=1', 'Content-Length': '121'})

F12 server:
2010/02/10 08:21:12 -04:00 23863 10.10.76.130: server/apacheRequest.response('output.hea
ders', {'content-length': '770', 'x-rhn-server-capability': ['registration.finish_messag
e(1)=1', 'applet.has_base_channel(1)=1', 'rhncfg.filetype.directory(1)=1', 'registration
.register_osad(1)=1', 'registration.delta_packages(1)=1', 'xmlrpc.packages.extended_prof
ile(1-2)=1', 'registration.remaining_subscriptions(1)=1', 'registration.update_contact_i
nfo(1)=1', 'registration.extended_update_support(1)=1', 'rhncfg.content.base64_decode(1)
=1', 'registration.smbios(1)=1', 'xmlrpc.login.extra_data(1)=1'], 'content-encoding': 'x
-zlib', 'content-transfer-encoding': 'base64', 'x-rhn-proxy-version': 'None', 'x-transpo
rt-info': 'Extended Capabilities Transport (C) Red Hat, Inc (version $Revision$)', 'x-rh
n-client-version': '1', 'connection': 'close', 'content-type': 'text/base64'})
2010/02/10 08:21:12 -04:00 23863 10.10.76.130: server/apacheRequest.response('self.req.h
eaders_out', {'Content-Length': '770', 'X-RHN-Server-Capability': 'xmlrpc.login.extra_da
ta(1)=1', 'Content-Encoding': 'x-zlib', 'Content-Transfer-Encoding': 'base64', 'X-RHN-Pr
oxy-Version': 'None', 'X-Transport-Info': 'Extended Capabilities Transport (C) Red Hat, 
Inc (version $Revision$)', 'X-RHN-Client-Version': '1', 'Connection': 'close'})

Comment 2 Michael Mráka 2010-02-10 22:17:51 UTC
On RHEL5 (mod_python) type(self.req.headers_out) is mp_table, while on F12 (mod_wsgi) type(self.req.headers_out) is  WsgiDict (which is subclass of dict).
mp_table allows several items with the same key while dict not.

Comment 3 Michael Mráka 2010-02-10 23:05:58 UTC
Fixed by
commit eb52be366419c4faa146434af2441bfe53871ff5
    Automatic commit of package [spacewalk-backend] release [0.8.44-1].
commit 320bbbd902e990f3882bc8598f5a834b83ab3070
    562644 - added class to emulate mod_python's mp_table

Comment 4 Michael Mráka 2010-02-16 12:59:46 UTC
Spacewalk 0.8 has been released