Description of problem: When rhevm is configured using a password with a special character, that character is escaped in 10-setup-database.conf. However, ovirt-engine-reports-setup does not honor the '/' as an escape character and fails to run. Version-Release number of selected component (if applicable): * rhevm-setup-3.3.0-0.46.el6ev.noarch * rhevm-reports-3.3.0-28.el6ev.noarch How reproducible: 100% Steps to Reproduce: 1. Manually create the engine user and database: postgres=# create user engine password '123$576'; postgres=# create database engine owner engine template template0 encoding 'UTF8' lc_collate 'en_US.UTF-8' lc_ctype 'en_US.UTF-8'; 2. Run engine-setup, entering '123$576' when prompted for the engine DB password 3. Run ovirt-engine-reports-setup NOTE: ovirt-engine-dwh-setup also has this problem. You need to manually edit '10-setup-database.conf', removing the '/', run ovirt-engine-dwh-setup, then edit '10-setup-database.conf' again and re-add the '/' to see this behavior. Actual results: It fails eventually with: 2014-02-26 16:04:38::DEBUG::common_utils::1018::root:: Executing command --> '/usr/bin/psql -w -U engine -h localhost -p 5432 -d engine -c update vdc_options set option_value='https://rhevm32.awayfar.org:443/rhevm-reports' where option_name='RedirectServletReportsPage';' in working directory '/usr/share/ovirt-engine-reports' 2014-02-26 16:04:38::DEBUG::common_utils::1073::root:: output = 2014-02-26 16:04:38::DEBUG::common_utils::1074::root:: stderr = psql: FATAL: password authentication failed for user "engine" Expected results: It runs successfully Additional info: After engine-setup is run, the ENGINE_DB_PASSWORD looks like this: ENGINE_DB_PASSWORD="123\$576" Analyzing the contents of db_dict, we see: {'username': 'engine_reports', 'engine_db': 'engine', 'dwh_db_user': 'engine_history', 'engine_pass': '123\\$576', 'engine_user': 'engine', 'port': '5432', 'host': 'localhost', 'dwh_database': 'ovirt_engine_history', 'dwh_db_password': '3202kFbN', 'password': '2452VfJh', 'dbname': 'rhevmreports'} The ovirt-engine-reports-setup script is interpreting the '/' escaping the '$' as a normal character, and then escaping it.
Th workaround for this is to edit '10-setup-database.conf', remove the '/', run ovirt-engine-reports-setup, then edit '10-setup-database.conf' again and add the '/' back.
Verified on av2.1: postgres=# "ALTER USER engine WITH PASSWORD '1234%6'; /etc/ovirt-engine/engine.conf.d/10-setup-database.conf: ENGINE_DB_USER="engine" ENGINE_DB_PASSWORD="1234%6" ENGINE_DB_DATABASE="engine" Reports installation passed successfuly.
Verified on av2.1: postgres=# "ALTER USER engine WITH PASSWORD '123$56'; /etc/ovirt-engine/engine.conf.d/10-setup-database.conf: ENGINE_DB_USER="engine" ENGINE_DB_PASSWORD="123\$56" ENGINE_DB_DATABASE="engine" Reports installation passed successfuly.
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. http://rhn.redhat.com/errata/RHEA-2014-0602.html