diff options
author | Jenkins <jenkins@review.openstack.org> | 2012-10-30 16:15:09 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2012-10-30 16:15:09 +0000 |
commit | 4649420ca2e8e24c8e651d141839d62fbbb53416 (patch) | |
tree | 7ef2b1784dfe3a8364f9a2a7374e93c8182179dd | |
parent | c20d7d902ee6e2ef50f20fa850f47afa310b5998 (diff) | |
parent | 01dad32c07ad500f2e0000dcd24a50f5c47cd206 (diff) | |
download | python-cinderclient-4649420ca2e8e24c8e651d141839d62fbbb53416.tar.gz |
Merge "Fix support for Unicode volume names"
-rw-r--r-- | cinderclient/utils.py | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/cinderclient/utils.py b/cinderclient/utils.py index 52f4da9..0e67508 100644 --- a/cinderclient/utils.py +++ b/cinderclient/utils.py @@ -1,3 +1,4 @@ +import locale import os import re import sys @@ -179,12 +180,19 @@ def find_resource(manager, name_or_id): return manager.find(name=name_or_id) except exceptions.NotFound: try: - # Volumes does not have name, but display_name - return manager.find(display_name=name_or_id) - except exceptions.NotFound: - msg = "No %s with a name or ID of '%s' exists." % \ - (manager.resource_class.__name__.lower(), name_or_id) - raise exceptions.CommandError(msg) + # For command-line arguments that are in Unicode + encoding = (locale.getpreferredencoding() or + sys.stdin.encoding or + 'UTF-8') + return manager.find(display_name=(name_or_id.decode(encoding))) + except (UnicodeDecodeError, exceptions.NotFound): + try: + # Volumes does not have name, but display_name + return manager.find(display_name=name_or_id) + except exceptions.NotFound: + msg = "No %s with a name or ID of '%s' exists." % \ + (manager.resource_class.__name__.lower(), name_or_id) + raise exceptions.CommandError(msg) except exceptions.NoUniqueMatch: msg = ("Multiple %s matches found for '%s', use an ID to be more" " specific." % (manager.resource_class.__name__.lower(), |