Bug 1417583
Summary: | hosted-engine --get-shared-config should report a nice error not traceback when nonexistent key is used | ||
---|---|---|---|
Product: | [oVirt] ovirt-hosted-engine-setup | Reporter: | Nikolai Sednev <nsednev> |
Component: | General | Assignee: | Jenny Tokar <jtokar> |
Status: | CLOSED CURRENTRELEASE | QA Contact: | Nikolai Sednev <nsednev> |
Severity: | high | Docs Contact: | |
Priority: | unspecified | ||
Version: | 2.1.0 | CC: | bugs, jtokar, nsednev, ylavi |
Target Milestone: | ovirt-4.1.1 | Keywords: | Reopened, Triaged |
Target Release: | 2.1.0.4 | Flags: | rule-engine:
ovirt-4.1+
nsednev: testing_plan_complete+ msivak: devel_ack+ |
Hardware: | x86_64 | ||
OS: | Linux | ||
Whiteboard: | |||
Fixed In Version: | Doc Type: | Bug Fix | |
Doc Text: |
Cause:
calling hosted-engine --get-shared-config with non existing key
Consequence:
traceback with an error message instead of a nice message
Fix:
format the error message
Result:
clear error with the available keys for the user
examples can be found here: http://www.ovirt.org/develop/release-management/features/sla/hosted-engine-edit-configuration-on-shared-storage/
|
Story Points: | --- |
Clone Of: | Environment: | ||
Last Closed: | 2017-04-21 09:52:12 UTC | Type: | Bug |
Regression: | --- | Mount Type: | --- |
Documentation: | --- | CRM: | |
Verified Versions: | Category: | --- | |
oVirt Team: | SLA | RHEL 7.3 requirements from Atomic Host: | |
Cloudforms Team: | --- | Target Upstream Version: | |
Embargoed: | |||
Bug Depends On: | |||
Bug Blocks: | 1301681, 1379405 |
Description
Nikolai Sednev
2017-01-30 11:03:29 UTC
Sosreport from alma04 available from here https://drive.google.com/open?id=0B85BEaDBcF88VDhuVFRTSnF4Zms This is mistake in documentation, the key should be state_transition and not state-transition. I fixed the document, can you verify that the correct key now works? # hosted-engine --get-shared-config state_transition --type=broker broker : maintenance|start|stop|migrate|up|down, type : broker I'm not sure how to properly use the set though. I've tried to use with single key value like: hosted-engine --set-shared-config state_transition maintenance --type=broker # hosted-engine --get-shared-config state_transition --type=broker broker : maintenance, type : broker But how to return to default of maintenance|start|stop|migrate|up|down ? # hosted-engine --set-shared-config state_transition maintenance,start,stop,migrate,up,down --type=broker [root@alma04 ~]# hosted-engine --get-shared-config state_transition --type=broker broker : maintenance,start,stop,migrate,up,down, type : broker hosted-engine --set-shared-config state_transition maintenance|start|stop|migrate|up|down --type=broker -bash: start: command not found -bash: stop: command not found -bash: migrate: command not found -bash: up: command not found -bash: down: command not found Anyway, the improperly used input of state-transition still causing an error, which have to be fixed, regardless of documentation. Use double quotes, the pipeline makes the shell think the arguments are commands. hosted-engine --set-shared-config state_transition "maintenance|start|stop|migrate|up|down" --type=broker Now that part from comment #3 is working properly. [root@alma04 ~]# hosted-engine --set-shared-config state_transition maintenance --type=broker[root@alma04 ~]# hosted-engine --get-shared-config state_transition : maintenance, type : broker [root@alma04 ~]# hosted-engine --set-shared-config state_transition "maintenance|start|stop|migrate|up|down" --type=broker [root@alma04 ~]# hosted-engine --get-shared-config state_transition : maintenance|start|stop|migrate|up|down, type : broker However that error should be fixed. I see an error that the key name doesn't appear at the beginning of the output line, and I'll fix that. Should be: "state_transition : maintenance|start|stop|migrate|up|down, type : broker" And not " : maintenance|start|stop|migrate|up|down, type : broker" However, what's causing the command to fail in comment 3 is a part of bash functionality, a pipeline (|) sends the output of the command to the next command in the pipeline. In our case bash interprets the command "hosted-engine --set-shared-config state_transition maintenance|start|stop|migrate|up|down --type=broker" like this: the output of "hosted-engine --set-shared-config state_transition maintenance" is sent to a command "start". This command does not exist so you get the bash error. This is not an error but the way bash works. That is not "Not a bug", rather incorrect documentation, which lead me to use "state-transition" instead of "state_transition". You should fix the issue when customer printing "state-transition" instead of "state_transition". puma18 ~]# hosted-engine --get-shared-config state-transition --type=broker Traceback (most recent call last): File "/usr/lib64/python2.7/runpy.py", line 162, in _run_module_as_main "__main__", fname, loader, pkg_name) File "/usr/lib64/python2.7/runpy.py", line 72, in _run_code exec code in run_globals File "/usr/lib/python2.7/site-packages/ovirt_hosted_engine_setup/get_shared_config.py", line 51, in <module> value_and_type = get_shared_config.get_shared_config(*sys.argv) File "/usr/lib/python2.7/site-packages/ovirt_hosted_engine_setup/get_shared_config.py", line 40, in get_shared_config result = ha_cli.get_shared_config(key, config_type) File "/usr/lib/python2.7/site-packages/ovirt_hosted_engine_ha/client/client.py", line 279, in get_shared_config return self._config.get_config_from_shared_storage(key, config_type) File "/usr/lib/python2.7/site-packages/ovirt_hosted_engine_ha/env/config.py", line 224, in get_config_from_shared_storage value = self.get(final_type, key) File "/usr/lib/python2.7/site-packages/ovirt_hosted_engine_ha/env/config.py", line 218, in get key KeyError: 'Configuration value not found: file=/var/lib/ovirt-hosted-engine-ha/broker.conf, key=state-transition' [root@puma18 ~]# hosted-engine --get-shared-config state_transition --type=broker broker : maintenance|start|stop|migrate|up|down, type : broker What docs did you use? http://www.ovirt.org/develop/release-management/features/sla/hosted-engine-edit-configuration-on-shared-storage/ Please see the https://bugzilla.redhat.com/show_bug.cgi?id=1417591 too. Nikolai, please open a github issue for https://github.com/oVirt/ovirt-site/ to have this fixed. We do not use bugzilla for feature pages. The ovirt site is already updated with the correct key name. (In reply to Martin Sivák from comment #10) > Nikolai, please open a github issue for https://github.com/oVirt/ovirt-site/ > to have this fixed. We do not use bugzilla for feature pages. Not sure I'm fully understand you Martin. Feature should be documented in official downstream documentation. Upstream documentation is not sufficient. Nikolai, you used upstream documentation and there was a bug there that needs to be reported using github issue. Is the same bug in downstream documentation as well? If not then this bug needs to be closed. (In reply to Martin Sivák from comment #13) > Nikolai, you used upstream documentation and there was a bug there that > needs to be reported using github issue. Is the same bug in downstream > documentation as well? If not then this bug needs to be closed. Downstream documentation was missing at the point of a time I was trying to verify the RFE. As reported in comment #11, upstream documentation was already fixed. This bug is not to be closed, until https://bugzilla.redhat.com/show_bug.cgi?id=1417583#c0 fixed. Even with fixed upstream documentation, in case of improperly cast command e.g. "hosted-engine --get-shared-config state-transition --type=broker", customer will get errors as appears above. Works for me on these components on hosts: qemu-kvm-rhev-2.6.0-28.el7_3.6.x86_64 mom-0.5.9-1.el7ev.noarch ovirt-host-deploy-1.6.2-1.el7ev.noarch vdsm-4.19.7-1.el7ev.x86_64 ovirt-engine-sdk-python-3.6.9.1-1.el7ev.noarch sanlock-3.4.0-1.el7.x86_64 ovirt-vmconsole-host-1.0.4-1.el7ev.noarch ovirt-hosted-engine-ha-2.1.0.4-1.el7ev.noarch rhevm-appliance-20161214.0-1.el7ev.noarch libvirt-client-2.0.0-10.el7_3.5.x86_64 ovirt-vmconsole-1.0.4-1.el7ev.noarch ovirt-imageio-common-1.0.0-0.el7ev.noarch ovirt-imageio-daemon-1.0.0-0.el7ev.noarch ovirt-hosted-engine-setup-2.1.0.4-1.el7ev.noarch ovirt-setup-lib-1.1.0-1.el7ev.noarch Linux version 3.10.0-514.10.2.el7.x86_64 (mockbuild.eng.bos.redhat.com) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC) ) #1 SMP Mon Feb 20 02:37:52 EST 2017 Linux 3.10.0-514.10.2.el7.x86_64 #1 SMP Mon Feb 20 02:37:52 EST 2017 x86_64 x86_64 x86_64 GNU/Linux Red Hat Enterprise Linux Server release 7.3 (Maipo) On engine: rhevm-setup-plugins-4.1.1-1.el7ev.noarch rhevm-dependencies-4.1.1-1.el7ev.noarch rhev-guest-tools-iso-4.1-4.el7ev.noarch rhevm-4.1.1.3-0.1.el7.noarch rhevm-doc-4.1.0-2.el7ev.noarch rhevm-branding-rhev-4.1.0-1.el7ev.noarch Linux version 3.10.0-514.6.2.el7.x86_64 (mockbuild.eng.bos.redhat.com) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC) ) #1 SMP Fri Feb 17 19:21:31 EST 2017 Linux 3.10.0-514.6.2.el7.x86_64 #1 SMP Fri Feb 17 19:21:31 EST 2017 x86_64 x86_64 x86_64 GNU/Linux Red Hat Enterprise Linux Server release 7.3 (Maipo) # hosted-engine --get-shared-config state-transition --type=broker Invalid configuration key state-transition. Available keys are: broker : ['smtp-port', 'destination-emails', 'smtp-server', 'source-email', 'state_transition'] # |