** Description changed:

  [ Impact ]
  
   * There is a bug in cmd2 v0.8.5 where an exception is thrown when GTK3
     libraries are not installed. This causes Python applications using
     cmd2 to crash unexpectedly
  
   * This patch backports a fix from upstream that handles that expection
     gracefully, allowing applications to function properly.
  
   * The workaround to this was to install GTK3, which is not ideal as the
     Python applications are command line tools, not graphical
  
  [ Test Plan ]
  
-  * Deploy focal
+ 1) Deploy focal
+ 2) Enable wallaby, xena or yoga proposed
  
-  * Install an application that has cmd2 as a dependency
-    e.g. python3-openstackclient
+ sudo add-apt-repository cloud-archive:yoga-proposed
  
-  * Run command that uses cmd2: `openstack server list`
-  
-  * In the failing case, we would expect to see an uncaught ValueError 
exception
+ 3) sudo apt update
+ 4) sudo apt install python3-openstackclient
+ 5) confirm packages installed 
  
-  * In the successful case, the command runs as anticipated
+ dpkg -l | egrep "(cmd2|pyperclip|cliff)"
+ 
+ python3-cliff                   3.10.0...
+ python3-cmd2                    0.8.5-2.1...
+ python3-pyperclip               1.7.0-1
+ 
+ 6) Simulate that a display is present
+ 
+ export DISPLAY=:1
+ 
+ 7) source a credentials file
+ 
+ source novarc
+ 
+ 8) Try to list servers
+ 
+ openstack server list
+ 
+ Traceback (most recent call last):
+   File "/usr/bin/openstack", line 6, in <module>
+     from openstackclient.shell import main
+   File "/usr/lib/python3/dist-packages/openstackclient/shell.py", line 23, in 
<module>
+     from osc_lib import shell
+   File "/usr/lib/python3/dist-packages/osc_lib/shell.py", line 24, in <module>
+     from cliff import app
+   File "/usr/lib/python3/dist-packages/cliff/app.py", line 23, in <module>
+     import cmd2
+   File "/usr/lib/python3/dist-packages/cmd2.py", line 585, in <module>
+     _ = pyperclip.paste()
+   File "/usr/lib/python3/dist-packages/pyperclip/__init__.py", line 667, in 
lazy_load_stub_paste
+     copy, paste = determine_clipboard()
+   File "/usr/lib/python3/dist-packages/pyperclip/__init__.py", line 558, in 
determine_clipboard
+     return init_gi_clipboard()
+   File "/usr/lib/python3/dist-packages/pyperclip/__init__.py", line 167, in 
init_gi_clipboard
+     gi.require_version('Gtk', '3.0')
+   File "/usr/lib/python3/dist-packages/gi/__init__.py", line 129, in 
require_version
+     raise ValueError('Namespace %s not available' % namespace)
+ ValueError: Namespace Gtk not available
+ 
+ 9) Enable focal proposed pocket
+ 
+ 
+ cat <<EOF >/etc/apt/sources.list.d/ubuntu-$(lsb_release -cs)-proposed.list
+ # Enable Ubuntu proposed archive
+ deb http://archive.ubuntu.com/ubuntu/ $(lsb_release -cs)-proposed restricted 
main multiverse universe
+ EOF
+ 
+ sudo apt update
+ 
+ 10) update python3-cmd2
+ 
+ sudo apt install python3-cmd2
+ 
+ 11) retest, should not produce any error
+ 
+ openstack server list
+ 
  
  [ Where problems could occur ]
  
-  * This changes the error handling for a library that is used by many
-    Python applications. Some of these applications could rely on the
-    existing behavior (a ValueError exception being thrown) to detect
-    certain configurations and change their behavior accordingly.
- 
-  * This would result in those applications failing under certain use
-    cases. For example, the configuration in question is a headless
-    Linux system without GTK libraries installed.
+  * The code change being backported is already present in jammy+,
+ therefore no issues or regressions are expected. However, given that
+ cmd2 is a library used by many different applications, and some may be
+ coded to handle the ValueError exception on version 0.8.5, or other code
+ modifications that exist in later versions but not in 0.8.5, this change
+ could potentially break the interaction with other applications that
+ were expecting a ValueErrro to be thrown. However, such scenario is
+ considered to be unlikely.
  
  [ Original bug description ]
  
  Openstack release: Wallaby
  OS: Ubuntu 20.04 server edition
  After installation of python3-openstackclient from apt, while setting up 
user, roles and project, I executed following command:
  openstack domain create --description "An Example Domain" example
  
  Error:
  Traceback (most recent call last):
    File "/usr/bin/openstack", line 6, in <module>
      from openstackclient.shell import main
    File "/usr/lib/python3/dist-packages/openstackclient/shell.py", line 23, in 
<module>
      from osc_lib import shell
    File "/usr/lib/python3/dist-packages/osc_lib/shell.py", line 24, in <module>
      from cliff import app
    File "/usr/lib/python3/dist-packages/cliff/app.py", line 22, in <module>
      import cmd2
    File "/usr/lib/python3/dist-packages/cmd2.py", line 585, in <module>
      _ = pyperclip.paste()
    File "/usr/lib/python3/dist-packages/pyperclip/__init__.py", line 667, in 
lazy_load_stub_paste
      copy, paste = determine_clipboard()
    File "/usr/lib/python3/dist-packages/pyperclip/__init__.py", line 558, in 
determine_clipboard
      return init_gi_clipboard()
    File "/usr/lib/python3/dist-packages/pyperclip/__init__.py", line 167, in 
init_gi_clipboard
      gi.require_version('Gtk', '3.0')
    File "/usr/lib/python3/dist-packages/gi/__init__.py", line 129, in 
require_version
      raise ValueError('Namespace %s not available' % namespace)
  
  Had to install GTK3 to make openstack commands work but it is taking
  huge time to get a response to the commands. The wait time after firing
  any openstack cli command is around 30 seconds.
  
  Anybody faced the issue? What is the fix for it if it exists?

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1945661

Title:
  openstack commands fail with GTK3 error

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/cmd2/+bug/1945661/+subscriptions


-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to