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
It's easy to fix this problem. Install python library with sha256 Solution: # yum install python-hashlib
I confirm that installing python-hashlib solves the problem. Going to add it as dependency.
Seems like we already have something for that in upstream: Spacewalk.git: a80c26cd0642084cd7cd48d6b3c4a9bc88809905
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
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