Bug 1182237 - configfiles deploy doesn't work on RHEL5
Summary: configfiles deploy doesn't work on RHEL5
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Red Hat Enterprise Linux 5
Classification: Red Hat
Component: rhn-client-tools
Version: 5.11
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: rc
: ---
Assignee: Matej Kollar
QA Contact: Pavel Studeník
URL:
Whiteboard:
Depends On:
Blocks: sat570-postga
TreeView+ depends on / blocked
 
Reported: 2015-01-14 16:55 UTC by Pavel Studeník
Modified: 2015-07-26 22:21 UTC (History)
3 users (show)

Fixed In Version: rhncfg-5.10.74-6
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2015-01-27 15:05:24 UTC
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Product Errata RHBA-2015:0088 0 normal SHIPPED_LIVE RHN Tools rhncfg bug fix update 2015-01-27 20:04:42 UTC

Description Pavel Studeník 2015-01-14 16:55:24 UTC
Description of problem:
I tried to deploy configuration file on RHEL5 and I got Error by rhn_check. New Satellite 5.7 used checksum sha256 and I suppose that it is the problem.

...
49, 'Failed deployment, rolled back:  Incompatible checksum type', {}
...

# rhncfg-client diff /mnt/pstudeni-test-big.txt
Using server name elisha.usersys.redhat.com
Traceback (most recent call last):
  File "/usr/bin/rhncfg-client", line 38, in ?
    sys.exit(Main().main() or 0)
  File "/usr/share/rhn/config_common/rhn_main.py", line 207, in main
    handler.run()
  File "/usr/share/rhn/config_client/handler_base.py", line 57, in run
    (src, file_info, dirs_created) = self.repository.get_file_info(file)
  File "/usr/share/rhn/config_client/rpc_cli_repository.py", line 91, in get_file_info
    temp_file, dirs_created = f.process(result, directory=dest_directory)
  File "/usr/share/rhn/config_common/file_utils.py", line 82, in process
    if file_struct['checksum'] != utils.getContentChecksum(
  File "/usr/share/rhn/config_common/utils.py", line 171, in getContentChecksum
    engine = hashlib.new(checksum_type)
  File "/usr/share/rhn/config_common/utils.py", line 30, in new
    raise ValueError, "Incompatible checksum type"
ValueError: Incompatible checksum type


Version-Release number of selected component (if applicable):
rhn-check-0.4.20.1-9.el5

How reproducible:
always on RHEL5

Steps to Reproduce:
1. create config channel 
2. create new file for this config channel
3. try to deploy on client with RHEL5

Actual results:
# rhn_check -vv
D: check_action {'action': "<?xml version='1.0'?>\n<methodCall>\n<methodName>configfiles.deploy</methodName>\n<params>\n<param>\n<value><struct>\n<member>\n<name>files</name>\n<value><array><data>\n<value><struct>\n<member>\n<name>config_channel</name>\n<value><string>pstudeni-channel</string></value>\n</member>\n<member>\n<name>username</name>\n<value><string>root</string></value>\n</member>\n<member>\n<name>delim_start</name>\n<value><string>{|</string></value>\n</member>\n<member>\n<name>encoding</name>\n<value><string>base64</string></value>\n</member>\n<member>\n<name>checksum</name>\n<value><string>9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08</string></value>\n</member>\n<member>\n<name>filetype</name>\n<value><string>file</string></value>\n</member>\n<member>\n<name>verify_contents</name>\n<value><boolean>1</boolean></value>\n</member>\n<member>\n<name>delim_end</name>\n<value><string>|}</string></value>\n</member>\n<member>\n<name>symlink</name>\n<value><string></string></value>\n</member>\n<member>\n<name>modified</name>\n<value><string></string></value>\n</member>\n<member>\n<name>groupname</name>\n<value><string>root</string></value>\n</member>\n<member>\n<name>file_contents</name>\n<value><string>dGVzdA==\n</string></value>\n</member>\n<member>\n<name>filemode</name>\n<value><int>644</int></value>\n</member>\n<member>\n<name>checksum_type</name>\n<value><string>sha256</string></value>\n</member>\n<member>\n<name>path</name>\n<value><string>/mnt/pstudeni-test-big.txt</string></value>\n</member>\n<member>\n<name>selinux_ctx</name>\n<value><string></string></value>\n</member>\n<member>\n<name>revision</name>\n<value><int>1</int></value>\n</member>\n</struct></value>\n</data></array></value>\n</member>\n</struct></value>\n</param>\n</params>\n</methodCall>\n", 'version': 2, 'id': 1237}
updateLoginInfo() login info
D: login(forceUpdate=True) invoked
logging into up2date server
D: writeCachedLogin() invoked
D: Wrote pickled loginInfo at  1421271766.87  with expiration of  1421275366.87  seconds.
successfully retrieved authentication token from up2date server
D: logininfo: {'X-RHN-Server-Id': 1000010145, 'X-RHN-Auth-Server-Time': '1421253831.14', 'X-RHN-Auth': '7MpFUW4w12s81hHiEgm+yCPPcsk2Im/0eDF0LFypve4=', 'X-RHN-Auth-Channels': [['rhel-x86_64-server-5', '20150114011713', '1', '1'], ['rhel-x86_64-server-vt-5', '20150110091754', '0', '1'], ['rhn-tools-rhel-x86_64-server-5', '20150113011627', '0', '1']], 'X-RHN-Auth-User-Id': '', 'X-RHN-Auth-Expire-Offset': '3600.0'}
D: handle_action {'action': "<?xml version='1.0'?>\n<methodCall>\n<methodName>configfiles.deploy</methodName>\n<params>\n<param>\n<value><struct>\n<member>\n<name>files</name>\n<value><array><data>\n<value><struct>\n<member>\n<name>config_channel</name>\n<value><string>pstudeni-channel</string></value>\n</member>\n<member>\n<name>username</name>\n<value><string>root</string></value>\n</member>\n<member>\n<name>delim_start</name>\n<value><string>{|</string></value>\n</member>\n<member>\n<name>encoding</name>\n<value><string>base64</string></value>\n</member>\n<member>\n<name>checksum</name>\n<value><string>9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08</string></value>\n</member>\n<member>\n<name>filetype</name>\n<value><string>file</string></value>\n</member>\n<member>\n<name>verify_contents</name>\n<value><boolean>1</boolean></value>\n</member>\n<member>\n<name>delim_end</name>\n<value><string>|}</string></value>\n</member>\n<member>\n<name>symlink</name>\n<value><string></string></value>\n</member>\n<member>\n<name>modified</name>\n<value><string></string></value>\n</member>\n<member>\n<name>groupname</name>\n<value><string>root</string></value>\n</member>\n<member>\n<name>file_contents</name>\n<value><string>dGVzdA==\n</string></value>\n</member>\n<member>\n<name>filemode</name>\n<value><int>644</int></value>\n</member>\n<member>\n<name>checksum_type</name>\n<value><string>sha256</string></value>\n</member>\n<member>\n<name>path</name>\n<value><string>/mnt/pstudeni-test-big.txt</string></value>\n</member>\n<member>\n<name>selinux_ctx</name>\n<value><string></string></value>\n</member>\n<member>\n<name>revision</name>\n<value><int>1</int></value>\n</member>\n</struct></value>\n</data></array></value>\n</member>\n</struct></value>\n</param>\n</params>\n</methodCall>\n", 'version': 2, 'id': 1237}
D: handle_action actionid = 1237, version = 2
D: do_call configfiles.deploy ({'files': [{'config_channel': 'pstudeni-channel', 'username': 'root', 'verify_contents': True, 'encoding': 'base64', 'checksum': '9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08', 'filetype': 'file', 'delim_start': '{|', 'modified': '', 'symlink': '', 'groupname': 'root', 'delim_end': '|}', 'selinux_ctx': '', 'filemode': 644, 'file_contents': 'dGVzdA==\n', 'checksum_type': 'sha256', 'path': '/mnt/pstudeni-test-big.txt', 'revision': 1}]},) {'cache_only': None}
Incompatible checksum type
D: Sending back response (49, 'Failed deployment, rolled back:  Incompatible checksum type', {})
D: do_call packages.checkNeedUpdate ('rhnsd=1',) {}
Loaded plugins: product-id, rhnplugin
This system is receiving updates from RHN Classic or RHN Satellite.
D: local action status:  (0, 'rpm database not modified since last update (or package list recently updated)', {})


Expected results:
Deploy works correct

Comment 1 Pavel Studeník 2015-01-14 17:01:49 UTC
It's easy to fix this problem. Install python library with sha256

Solution:

# yum install python-hashlib

Comment 2 Matej Kollar 2015-01-15 11:28:39 UTC
I confirm that installing python-hashlib solves the problem. Going to add it as dependency.

Comment 3 Matej Kollar 2015-01-15 11:44:32 UTC
Seems like we already have something for that in upstream:
Spacewalk.git: a80c26cd0642084cd7cd48d6b3c4a9bc88809905

Comment 6 Pavel Studeník 2015-01-19 14:35:47 UTC
Verified with:

 rhncfg-5.10.74-6.el7sat
 rhncfg-5.10.74-6.el6sat
 rhncfg-5.10.74-6.el5sat

# rhncfg-client diff /mnt/pstudeni-test-big.txt
Using server name  <server>
Deploying /mnt/pstudeni-test-big.txt

Comment 8 errata-xmlrpc 2015-01-27 15:05:24 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://rhn.redhat.com/errata/RHBA-2015-0088.html


Note You need to log in before you can comment on or make changes to this bug.