Description of problem: Unable to generate the bash_completion file with openstack complete. (undercloud) [stack@undercloud-osp14 ~]$ openstack complete 2019-02-04 15:16:22.176 88243 DEBUG osc_lib.clientmanager [-] No service catalog is_service_available /usr/lib/python2.7/site-packages/osc_lib/clientmanager.py:223 2019-02-04 15:16:22.221 88243 DEBUG osc_lib.clientmanager [-] No service catalog is_service_available /usr/lib/python2.7/site-packages/osc_lib/clientmanager.py:223 2019-02-04 15:16:22.247 88243 DEBUG osc_lib.clientmanager [-] No service catalog is_service_available /usr/lib/python2.7/site-packages/osc_lib/clientmanager.py:223 2019-02-04 15:16:22.279 88243 DEBUG osc_lib.clientmanager [-] No service catalog is_service_available /usr/lib/python2.7/site-packages/osc_lib/clientmanager.py:223 2019-02-04 15:16:22.342 88243 DEBUG osc_lib.clientmanager [-] No service catalog is_service_available /usr/lib/python2.7/site-packages/osc_lib/clientmanager.py:223 2019-02-04 15:16:22.360 88243 DEBUG osc_lib.clientmanager [-] No service catalog is_service_available /usr/lib/python2.7/site-packages/osc_lib/clientmanager.py:223 2019-02-04 15:16:22.440 88243 DEBUG osc_lib.clientmanager [-] No service catalog is_service_available /usr/lib/python2.7/site-packages/osc_lib/clientmanager.py:223 2019-02-04 15:16:22.441 88243 DEBUG osc_lib.clientmanager [-] No service catalog is_service_available /usr/lib/python2.7/site-packages/osc_lib/clientmanager.py:223 2019-02-04 15:16:22.458 88243 DEBUG osc_lib.clientmanager [-] No service catalog is_service_available /usr/lib/python2.7/site-packages/osc_lib/clientmanager.py:223 2019-02-04 15:16:22.460 88243 DEBUG osc_lib.clientmanager [-] No service catalog is_service_available /usr/lib/python2.7/site-packages/osc_lib/clientmanager.py:223 2019-02-04 15:16:22.543 88243 DEBUG osc_lib.clientmanager [-] No service catalog is_service_available /usr/lib/python2.7/site-packages/osc_lib/clientmanager.py:223 2019-02-04 15:16:22.649 88243 ERROR openstack [-] 'NoneType' object has no attribute '_get_optional_actions' 2019-02-04 15:16:22.649 88243 INFO osc_lib.shell [-] END return value: 1 Version-Release number of selected component (if applicable): RH OSP14 How reproducible: Every time Steps to Reproduce: 1. Install osp14 undercloud 2. Source ~/stackrc 3. execute: openstack complete Actual results: 2019-02-04 15:16:22.649 88243 ERROR openstack [-] 'NoneType' object has no attribute '_get_optional_actions' Expected results: List of openstack commands in bash-completion friendly form Additional info:
$ openstack --debug complete [...] 2019-02-05 10:05:27.754 8964 ERROR openstack AttributeError: 'NoneType' object has no attribute '_get_optional_actions' 2019-02-05 10:05:27.754 8964 ERROR openstack 2019-02-05 10:05:27.755 8964 ERROR osc_lib.shell [-] Traceback (most recent call last): File "/usr/lib/python2.7/site-packages/osc_lib/shell.py", line 135, in run ret_val = super(OpenStackShell, self).run(argv) File "/usr/lib/python2.7/site-packages/cliff/app.py", line 281, in run result = self.run_subcommand(remainder) File "/usr/lib/python2.7/site-packages/osc_lib/shell.py", line 175, in run_subcommand ret_value = super(OpenStackShell, self).run_subcommand(argv) File "/usr/lib/python2.7/site-packages/cliff/app.py", line 402, in run_subcommand result = cmd.run(parsed_args) File "/usr/lib/python2.7/site-packages/cliff/command.py", line 184, in run return_code = self.take_action(parsed_args) or 0 File "/usr/lib/python2.7/site-packages/cliff/complete.py", line 217, in take_action dicto.add_command(command, self.get_actions(command)) File "/usr/lib/python2.7/site-packages/cliff/complete.py", line 202, in get_actions return cmd_parser._get_optional_actions() AttributeError: 'NoneType' object has no attribute '_get_optional_actions' 2019-02-05 10:05:27.755 8964 INFO osc_lib.shell [-] END return value: 1
This seems to be happening because of a single command in tripleoclient (openstack tripleo config generate ansible), submitted a fix upstream.
Julie, thank you! Could you provide a link to your upstream fix? This is a painful papercut.
Nevermind, I found the change here: https://review.opendev.org/gitweb?p=openstack%2Fpython-tripleoclient.git;a=commitdiff;h=e38c775e418c67af4dd2ff8086bb1ea8a6804f94 Unfortunately it seems that I already have your fix in /usr/lib/python2.7/site-packages/tripleoclient/v1/tripleo_config.py. I am using RDO "stein". And yet I am still getting a similar error. Actually, in my case "openstack complete" *does* emit the completion code but wraps it in logs message emitted to stdout that make it unusable. I can't see any way to suppress these log messages to stdout. Also note that my final log message has return code 0 rather than 1: 2019-05-30 11:01:09.704 702813 DEBUG osc_lib.clientmanager [-] No service catalog is_service_available /usr/lib/python2.7/site-packages/osc_lib/clientmanager.py:223 2019-05-30 11:01:09.724 702813 DEBUG osc_lib.clientmanager [-] No service catalog is_service_available /usr/lib/python2.7/site-packages/osc_lib/clientmanager.py:223 2019-05-30 11:01:09.734 702813 DEBUG osc_lib.clientmanager [-] No service catalog is_service_available /usr/lib/python2.7/site-packages/osc_lib/clientmanager.py:223 2019-05-30 11:01:09.749 702813 DEBUG osc_lib.clientmanager [-] No service catalog is_service_available /usr/lib/python2.7/site-packages/osc_lib/clientmanager.py:223 2019-05-30 11:01:09.779 702813 DEBUG osc_lib.clientmanager [-] No service catalog is_service_available /usr/lib/python2.7/site-packages/osc_lib/clientmanager.py:223 2019-05-30 11:01:09.788 702813 DEBUG osc_lib.clientmanager [-] No service catalog is_service_available /usr/lib/python2.7/site-packages/osc_lib/clientmanager.py:223 2019-05-30 11:01:09.813 702813 DEBUG osc_lib.clientmanager [-] No service catalog is_service_available /usr/lib/python2.7/site-packages/osc_lib/clientmanager.py:223 2019-05-30 11:01:09.814 702813 DEBUG osc_lib.clientmanager [-] No service catalog is_service_available /usr/lib/python2.7/site-packages/osc_lib/clientmanager.py:223 2019-05-30 11:01:09.822 702813 DEBUG osc_lib.clientmanager [-] No service catalog is_service_available /usr/lib/python2.7/site-packages/osc_lib/clientmanager.py:223 2019-05-30 11:01:09.822 702813 DEBUG osc_lib.clientmanager [-] No service catalog is_service_available /usr/lib/python2.7/site-packages/osc_lib/clientmanager.py:223 2019-05-30 11:01:09.844 702813 DEBUG osc_lib.clientmanager [-] No service catalog is_service_available /usr/lib/python2.7/site-packages/osc_lib/clientmanager.py:223 2019-05-30 11:01:09.932 702813 DEBUG osc_lib.clientmanager [-] No service catalog is_service_available /usr/lib/python2.7/site-packages/osc_lib/clientmanager.py:223 2019-05-30 11:01:09.937 702813 DEBUG osc_lib.clientmanager [-] No service catalog is_service_available /usr/lib/python2.7/site-packages/osc_lib/clientmanager.py:223 2019-05-30 11:01:10.027 702813 DEBUG osc_lib.clientmanager [-] No service catalog is_service_available /usr/lib/python2.7/site-packages/osc_lib/clientmanager.py:223 2019-05-30 11:01:10.028 702813 DEBUG osc_lib.clientmanager [-] No service catalog is_service_available /usr/lib/python2.7/site-packages/osc_lib/clientmanager.py:223 2019-05-30 11:01:10.034 702813 DEBUG osc_lib.clientmanager [-] No service catalog is_service_available /usr/lib/python2.7/site-packages/osc_lib/clientmanager.py:223 2019-05-30 11:01:10.041 702813 DEBUG osc_lib.clientmanager [-] No service catalog is_service_available /usr/lib/python2.7/site-packages/osc_lib/clientmanager.py:223 2019-05-30 11:01:10.080 702813 DEBUG osc_lib.clientmanager [-] No service catalog is_service_available /usr/lib/python2.7/site-packages/osc_lib/clientmanager.py:223 _openstack() { local cur prev words COMPREPLY=() ... return 0 } complete -F _openstack openstack 2019-05-30 11:01:10.088 702813 INFO osc_lib.shell [-] END return value: 0
Hi Emblem. If you don't see the "AttributeError: 'NoneType' object has no attribute '_get_optional_actions'" error then this is a different issue and a separate bug should be opened, upstream since you are using RDO. From the output you post though, it seems like you're getting some extra logging statements around the output, but not within it, so you should be able to use it?
Thanks, will open a new bug. The annoyance is that those log messages are sent to stdout, just like the actual output. So I guess I could grep and remove those lines, but obviously that is error-prone and not the right way to do it. In my opinion this is actually a Cliff issue. Cliff should be able to output the bash completion to a file directly as to avoid any kind of other component outputting to stdout.
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://access.redhat.com/errata/RHBA-2019:1672
It is fixed upstream on the python-openstackclient package in PyPI, but I'm afraid the bug is still present in most recent RPM packages for Stein. For those interested in a workaround: openstack complete | sed '/DEBUG osc_lib.clientmanager/d' > bash_completion.sh
Actually, this is the workaround: openstack complete | sed '/DEBUG osc_lib./d' > bash_completion.sh