cinder list used to print None when volume was created without name.
Now it prints '-' dash when display_name is None
Closes-Bug: #1422244
Change-Id: I195ccc37fe96dbb54a0460527fabf55146170bc7
This patch drops the import_class method from utils and instead
leverages the one in openstack.common.importutils.
Change-Id: I9f740b9941d477776597c4c4ab88a65a39fb4fb8
Closes-bug: 1365273
The cinder client supports invoking the volumes REST API with the
sort_dir and sort_key parameters. However, the client output table
is always sorted by ID even though the REST API is returning in
sorted order based on the sort key/direction provided.
For example, the command below supplies the 'size' sort key but the
output table is still sorted by ID:
cinder list --sort_key size --sort_dir desc
This fix contains:
* Updates to the print_list utility to prevent any re-ordering so
that the current object order is maintained
* Updates to the shell to disable re-ordering if the user supplies
sort parameters
Change-Id: I4cc111a8bdd2b89158dfc4bb0d16fa6dbf36cc57
Closes-Bug: 1402846
Most of these methods were imported when we forked away from
python-novaclient, but over the course of time, their existence
became redundant as no file seems to be importing them. Such
methods are removed in this change.
Change-Id: Ic93fc92ce624eefaeaca6de5c8fd965e88159030
Passing mutable objects as default args is a known Python pitfall.
We'd better avoid this. This commit changes mutable default args with
None.
Change-Id: I7817c92069d32d1926e185ca0d0ab14e738b8b3d
With CINDER_RAX_AUTH being rightfully removed, cinderclient is no longer
compatible with Rackspace/any non-keystone auth. To fix this, I stole
auth_system/auth_plugin from novaclient's implementation.
See https://review.openstack.org/#/c/23820/.
Change-Id: If5f84003f868ef02bb7eb7da67cf62018602e8f0
Closes-Bug: 1280393
NOTE:
* openstack/common/* should be synced from oslo, so i leave them
untouched.
* add (c) symbol for related lines, leave others untouched.
Change-Id: I46a87c7f248d3468b1fdf5661411962faf2fb875
Fixes-Bug: #1214176
This patch adds volume name arguments to the following subcommands:
* snapshot-create
* backup-create
* backup-restore
* transfer-create
Fixes bug #1220590
Change-Id: Ib0ff6e62d45abb14fa8c7313511ef6f72befe0d5
These exceptions can be used in novaclient, keystoneclient,
glanceclient, and other client projects.
Partially implements: blueprint common-client-library
Change-Id: I43918316622b1c1d722872fe30199db6a3a7bb76
strutils is used to safely encode and decode unicode strings
for python2.7. Since unicode strings are the default in python3,
ignore the use of strutils when running with python3.
Change-Id: I9a8e296b4f2153b1ef4302a7dcd797fbb4561c35
Signed-off-by: Chuck Short <chuck.short@canonical.com>
The testsuite is full of the following:
TypeError: 'dict_keys' object does not support indexing
This is due to the fact in python3 dict methods dict.keys(),
dict.items() and dict.values() return “views” instead of lists.
Change-Id: Ifa5383e6485fdbabf363fd1442877b2452346c1c
Signed-off-by: Chuck Short <chuck.short@canonical.com>
Python3 enforces the distinction between byte
strings and text strings more rigorously than
python2. So use six.text_type where approiate.
Change-Id: I46b3f5fe1f990fc1b7a3ee32904d608b070fc4c3
Signed-off-by: Chuck Short <chuck.short@canonical.com>
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