summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2012-10-30 16:15:09 +0000
committerGerrit Code Review <review@openstack.org>2012-10-30 16:15:09 +0000
commit4649420ca2e8e24c8e651d141839d62fbbb53416 (patch)
tree7ef2b1784dfe3a8364f9a2a7374e93c8182179dd
parentc20d7d902ee6e2ef50f20fa850f47afa310b5998 (diff)
parent01dad32c07ad500f2e0000dcd24a50f5c47cd206 (diff)
downloadpython-cinderclient-4649420ca2e8e24c8e651d141839d62fbbb53416.tar.gz
Merge "Fix support for Unicode volume names"
-rw-r--r--cinderclient/utils.py20
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(),