Previously, the ovirt-engine-reports-setup command would fail under certain conditions. This would occur when the password specified for the internal admin user for the Red Hat Enterprise Virtualization Manager contained special characters. While passwords would be correctly escaped in the 10-setup-database.conf file, the ovirt-engine-reports-setup command would not detect the '/' escape character, resulting in an authentication error. Now, this logic has been revised so that special characters are correctly parsed, making it possible for the ovirt-engine-reports-setup command to complete successfully.
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.
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
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.