Use six to allow python2/pyton3 for iteritems and
iterkeys.
six.iteriems() replaces dictionary.iteritems() (python2)
and dictionary.iterms() (python3)
six.iterkeys() replaces dictionary.iterkeys (python2)
and dictionary.keys() (python3)
Change-Id: I26c80b78a7dedf3aa32eedf01a83ff6d1e592ba7
Signed-off-by: Chuck Short <chuck.short@canonical.com>
Once the table is built, the length of the prettytable's internal array
is checked rather than re-iterrating over the input.
Adds tests for utils.print_list with list and generator input.
Change-Id: I4c0bd08bf0c943de42ad90d255a2d831c2e98828
Fixes: bug #1180059
Several files were missing the license issue, so simply
add them.
Change-Id: I866ec03096a72fe8ae7d776e2ffe040379ec5bc6
Signed-off-by: Chuck Short <chuck.short@canonical.com>
Changes to strutils.safe_encode cause the empty
table to be printed out when no objects are actually
retrieved.
This patch just adds a check of the object list length
before calling strutils.safe_encode, if the length is NOT
> 0 we just return like we used to.
Change-Id: I57930b5210c975baa7c4510fcf82b17157e17788
Currently cinderclient doesn't handle properly incoming and outgoing
encode / decode process. As a solution for this, this patch implements a
decoding process for all data incoming from the user side and encodes
everything going out of the client, i.e: http requests, prints, etc.
This patch introduces a new module (strutils.py) taken from
oslo-incubator in order to use 2 of the functions present in it:
About safe_(decode|encode):
Both functions try to encode / decode the incoming text using the
stdin encoding, fallback to python's default encoding if that
returns None or to UTF-8 as the last option.
In both functions only basestring objects are accepted and they both
raise TypeError if an object of another type is passed.
About the general cinderclient changes:
In order to better support non-ASCII characters, it is a good
practice to use unicode interanlly and encode everything that has to
go out. This patch aims to do that and introduces this behaviour in
the client.
Testing:
A good test (besides using tox) is to use cinder client with and
without setting any locale (export LANG=).
Fixes bug: 1130572
Change-Id: Idb7d06954c29e003f68a0c4aa0b80ecc7017cbc9
It is possible to create a Unicode volume from the command line,
but it cannot be manipulated by name for operations such as delete.
This is because the find_resource function tries to match the
Unicode string to a regular byte string, and a UnicodeWarning is
issued, failing the match. Fix by decoding the Unicode name when
trying to match.
Fixes bug 1065275.
Change-Id: I8e19a78bbc1ccb503ccd39dc3b904fc4f6f77858