121 Commits

Author SHA1 Message Date
Ian Wienand
d41d7155c0 Replace bypass_url with os_endpoint
The --bypass-url argument was removed with
I3b951cc4eb3adff23f3d2cbe674971816261ef56 so this name does not make
sense now.  Replace with os_endpoint.

Change-Id: Ifa889cc2e885e9c621c8494995b2020195b696ca
2020-03-25 06:08:35 +11:00
Eric Harney
a7e9a49a3f Add test for subcommands
This tests that the expected subcommands register
in the shell client, by looking at the output
that would show up in "cinder help".

The purpose of this is to help prevent us from
accidentally deleting some commands when refactoring
shell code.

TODO: cover commands post-3.0
Change-Id: Ifcbc08ae9184fa33049b18f8ad7ef5d92003a7b8
2019-11-12 15:55:08 -05:00
Zuul
bafd84b9fa Merge "Optional filters parameters should be passed only once" 2019-09-11 14:16:09 +00:00
Sean McGinnis
dce8a8ed10 Drop support for OS_TENANT_NAME and OS_TENANT_ID
These have been deprecated for a very long time now. Switch to only
support the current OS_PROJECT_NAME and OS_PROJECT_ID.

Change-Id: I2fb78768b4308a3aaf12764edadb58d4a307adaa
Signed-off-by: Sean McGinnis <sean.mcginnis@gmail.com>
2019-09-10 15:56:27 -05:00
whoami-rajat
624b444226 Optional filters parameters should be passed only once
This patch does the following :

1) Errors out if similar type of filters args are passed
Eg :
cinder list --name abc --name xyz
cinder list --name abc --filters name=xyz

2) Allows multiple filter parameters of different type
cinder list --filters name=abc --filters size=1

Change-Id: I2f8662555f830b0821147324849d04e7a29d0580
2019-09-05 18:27:52 +05:30
Eric Harney
d1b044b82a Autonegotiate API version for shell
If OS_VOLUME_API_VERSION is not set, use the highest
supported by both the client and the server.

If OS_VOLUME_API_VERSION exceeds that supported by the server,
use the highest supported by both the client and the server.
A warning message is printed for the user indicating that this
happened.

(This is similar to the behavior of the manila CLI, and is
mostly code from manilaclient tweaked to work in cinderclient.)

Change-Id: Ie1403eca2a191f62169e60c0cde1622575327387
2019-08-28 11:57:02 -04:00
Sean McGinnis
bccbd510a7 Fix max version handling for help output
Commit fefe331f218d73ba6d1d7acf81b5eb02609c953e incorrectly set the
default API version to the max the client knew about in order to get the
full help output, including all microversioned commands.

The original intent was to have help print out information for all
versions, but still require the user to specify a version if they wanted
to use any microversioned version of an API. The code accidentally made
it so all commands would request the max version the client knew about.
This meant an unspecified request would get the newer functionality
rather than the default v3 functionality, and also meant the client
could request a microversion higher than what the server knew about,
resulting in an unexpected error being returned.

To keep the originally intended functionality, but keep all help output,
this only uses the max API version for the help command unless the user
specifies otherwise.

Closes-bug: #1813967

Change-Id: I20f6c5471ffefe5524a4d48c967e2e8db53233f1
Signed-off-by: Sean McGinnis <sean.mcginnis@gmail.com>
2019-01-30 19:00:51 -06:00
Sean McGinnis
4b0f5876d6
Remove i18n.enable_lazy() translation
Per [1], don't.

[1] http://lists.openstack.org/pipermail/openstack-dev/2018-November/136289.html

Change-Id: I4a1e8cf84a88e5bd301d1baba41b064cde336f38
Signed-off-by: Sean McGinnis <sean.mcginnis@gmail.com>
2018-11-13 09:47:05 -06:00
Sean McGinnis
fefe331f21
Default help output to include MV updates
We are inconsistent with some other projects with hiding client help
output for commands added with microversions by default. This often
leads to confusion with users of the CLI not being aware of these
changes.

This changes the default to display all help output. Users can still
specify a version and have the output limited to include only options up
to the version they specify.

Change-Id: I39d90a1ecc824fcf445e98609de47d45e71a0ff6
Signed-off-by: Sean McGinnis <sean.mcginnis@gmail.com>
2018-09-20 11:42:41 -05:00
Sean McGinnis
a331f06df0
Remove deprecated CLI options
The following options were deprecated in Queens or Pike and are now
being removed:

--endpoint-type
--bypass-url
--os-auth-system

Change-Id: I3b951cc4eb3adff23f3d2cbe674971816261ef56
Signed-off-by: Sean McGinnis <sean.mcginnis@gmail.com>
2018-07-23 11:50:35 -05:00
Eric Harney
3142e9f9b3 Allow --help for specific commands
This makes calls such as:
     $ cinder list --help

work as expected, equivalent to:
     $ cinder help list

rather than just printing the full help message.

Change-Id: I038eeeea554f0bb5dd170f503eaec570441520b3
2018-04-10 15:37:22 -04:00
melissaml
953bd8cb89 fix a typo in documentation
Change-Id: Icb6c9808829c6088f6ae2408718bcb03ddc7b53a
2018-03-23 08:09:10 +08:00
Zhao Chao
77143d43dc Migrate to keystoneauth identity cli opts.
Use keystoneauth1 to parse keystone authentication arguments. Previously
these arguments are parsed in the different service clients seperately.
Use keystoneauth1 instead will make this consistent across projects and
less error-prone.

This change is inspired by NovaClient.

Co-Authored-By: Morgan Fainberg <morgan.fainberg@gmail.com>
Co-Authored-By: David Hu <david.hu@hp.com>
Co-Authored-By: Monty Taylor <mordred@inaugust.com>

Closes-Bug: #1734945

Change-Id: I3c5141eeddd3747ff542e95b04e4848470ad9508
Signed-off-by: Zhao Chao <zhaochao1984@gmail.com>
2018-01-16 20:49:14 +08:00
Zuul
d17ae43e1d Merge "Add cluster support in migration and manage" 2017-12-01 15:10:06 +00:00
Zuul
a8364340dd Merge "Fix OS_AUTH_TYPE env var usage" 2017-10-19 02:12:06 +00:00
Gorka Eguileor
8fce74056f Add cluster support in migration and manage
This patch adds support for API microversion 3.16, which allows us to
pass --cluster optional argument to migration and manage operations.

For this, a new type of CLI argument is added, the mutually exclusive
arguments that can be used similarly to the utils.arg decorator, but
with utils.exclusive_arg decorator.

Implements: blueprint cinder-volume-active-active-support
Change-Id: If004715b9887d2a0f9fc630b44d6e11a4a8b778d
2017-10-03 11:03:28 +02:00
Gorka Eguileor
ce1013d6b3 Fix OS_AUTH_TYPE env var usage
Right now only deprecated OS_AUTH_SYSTEM environmental variable works to
set the authentication to noauth, the reason is that we have multiple
arguments writing on the same destination.

This patch fixes this by making both arguments have the same default
value, which is to use environmental variable OS_AUTH_TYPE if it has a
value or deprecated OS_AUTH_SYSTEM if not.

Closes-Bug: #1708687
Change-Id: I478fb0e628d4bebd4a1dc78c2559202916aa051f
2017-08-04 18:10:50 +02:00
Eric Harney
60d00b0a03 Enable H306
Enforce ordering of imports with H306.

For tests, this is mostly done by grouping test
imports after other cinderclient imports.

Change-Id: Ie40fda014d1aedb057e5b4ea1f27f999c84e6373
2017-08-01 16:23:49 -04:00
Jenkins
d7d7e50126 Merge "Clean the redundant code in shell.py" 2017-08-01 19:14:16 +00:00
junboli
c6504502ed Clean the redundant code in shell.py
In the file cinderclient/shell.py, packages requests and six
are double imported. This patch is to clean the redundant code.

Change-Id: I4bade57753a50245df1b4b82c4a8708d3b0acdba
2017-07-27 10:07:05 +00:00
Tovin Seven
3e235b2b51 Make --profile load from environment variables
--profile argument can be loaded from OS_PROFILE environment variables
to avoid repeating --profile in client commands.

Co-Authored-By: Hieu LE <hieulq@vn.fujitsu.com>
Change-Id: Ia9b469024395327ec0ee082ddaea3234fc3ca5a6
2017-07-27 01:33:05 +00:00
Sean McGinnis
7a0694084f Fix attribute errors in os-auth-* settings
This fixes some wording and formatting issues with the help
text that is printed for CLI arguments.

The duplication of default values for os-auth-system appears
to lead to attribute errors requiring explicitly unsetting
OS_AUTH_TYPE.

Closes-bug: #1695054
Change-Id: I0263ef2fb15744f7e352c7365e7d9e61c1ebc974
2017-06-01 13:43:48 -05:00
Jenkins
48ac0b9d14 Merge "Add a missing left bracket in help message" 2017-05-25 18:43:57 +00:00
Ivan Kolodyazhny
60f92db704 Fix noauth support
This patch includes several improvements:
1. Use keystoneauth1 plugin mechanism for auth plugins.
2. Implements CinderNoAuthPlugin.
3. Deletes non-working cinderclient.auth_plugin module.
4. Deprecates --bypass-url in flavor of --os-endpoint to be consistent
with keystoneauth1 plugins.
5. Deprecates in --os-auth-system in falvor of --os-auth-type to be
consistent with keystoneauth1 plugins.

Both bypass_url and os_auth_system params are not changed for client
objects to not break backward compatibility for Python API.

How to use noauth with cinderclient CLI:
OS_USER_ID=userid OS_PROJECT_ID=projectis cinder --os-auth-type noauth
--os-endpoint=http://localhost:8776/v2 list

Change-Id: I3be59a5a39235acbc3334e0a0b797081507a5c88
Closes-Bug: #1657156
2017-03-24 13:24:50 +02:00
KATO Tomoyuki
0c3a6445df Add a missing left bracket in help message
Change-Id: I8c6cfbefc45cd1e54ce9d15280c93b02114faf94
2017-03-22 00:17:15 +09:00
Gorka Eguileor
c022b73faf Fix pep8 errors
There are some PEP8 errors that are not caught by our gate because of
the pep8 package version installed by hacking.

This patch fixes E402, W503, and F999 erors from our codebase.

Change-Id: I0b86730b1493f161645a87c3daa91ec3d774d3b1
2017-03-15 13:42:49 +01:00
Jenkins
6c499cc6a5 Merge "Make V3 the default and fixup version reporting" 2017-03-11 01:09:36 +00:00
John Griffith
13702ce40c Make V3 the default and fixup version reporting
This adds in a version-list command that reports the
min/max versions of the Cinder API supported by this
version of the client, and also queries the Cinder API
V3 server to obtain min/max micro-versions and report
those as well.

In addition, we bump the default version of the client to
3.0, of course if you specify V2 in your rc file or on the
cmd line that works fine too.

I did run into one problem where I broke:
  cinder.tests.unit.test_shell:test_cinder_service_name

Seems to be some hidden trickery with a fake, fixture or
mock that I can't figure out.  For now I added a skip to
that test, but maybe somebody can point out the problem
during review.

Change-Id: I44e667c511d89de28af758a3c9ea1f812e682f18
2017-03-10 17:58:50 +00:00
Gábor Antal
84346b5dba Handle log message interpolation by the logger
According to OpenStack Guideline[1], logged string message should be
interpolated by the logger.

[1]: http://docs.openstack.org/developer/oslo.i18n/guidelines.html#adding-variables-to-log-messages

Change-Id: Ib5f86d1f0846e292457813c893b73c6999e554a5
Closes-Bug: #1596829
2017-02-07 16:22:27 +01:00
xianming mao
44507540f6 Python3 common patterns
Modify some codes in order to lead them meet the python3 common pattern.
Look through the following patterns of Cinder,
      map() and filter() if a list is needed on Python 3:
          Replace map(func, data) with [func(item) for item in data]
          Replace filter(lambda obj: test(obj), data) with
             [obj for obj in data if test(obj)]
      Replace exceptions.OSError with OSError and
         remove "import exceptions"
      Replace iterator.next() with next(iterator)
      Replace basestring with six.string_types
      Replace unicode with six.text_type
      Replace (str, unicode) with six.string_types
      Replace "for key in dict.iterkeys()" with "for key in dict"
      Replace dict.iteritems() with dict.items()
      Replace dict.itervalues() with dict.values()
I found that only "filter(lambda obj: test(obj), data)" and
"map(func, data)"need to modify.
The other items are not be founded in Cinder.

Reference:https://wiki.openstack.org/wiki/Python3#Common_patterns

Change-Id: If33ec39eb176c14086132d3099c6ec577f956ded
2017-01-10 08:55:30 +00:00
Vipin Balachandran
81a1487d91 Move trace ID print statement to finally
If there is an exception raised by cinder-api while using
--profile option, the trace ID is not printed. Moving the
trace ID print statement to finally block to fix this.

Change-Id: I03df8cd47185d148051d66396f6cd8118efff73c
Closes-bug: #1642888
2016-11-18 14:55:06 +05:30
Nate Potter
a33d87fb42 Update --endpoint-type dest to os_endpoint_type
Currently the dest of the deprecated --endpoint-type arg
is 'endpoint_type'. However, the code only uses 'os_endpoint_type'
so right now it isn't being used at all. This patch updates
the dest to be 'os_endpoint_type' so that the variable can
be assigned correctly.

Change-Id: Ie8592d12bcf95e4ccff571e831440b18f5acfd40
Closes-bug: #1454436
2016-10-21 22:07:51 +00:00
xianming mao
41a4187061 Help msg and output info should support il8n.
Help msg and output info should support il8n.
And delete the unused import six.

Close-Bug: #1629157
Change-Id: Ie1faf0a83ec5f04dc6c8303f1ea0c931ba482e2a
2016-10-18 12:12:25 +00:00
Eric Harney
268f50270d Print backtrace for exception when in debug mode
If the cinder shell is run in debug mode
(CINDERCLIENT_DEBUG is set in the environment or
with --debug), print a traceback for unhandled
exceptions.

This makes it possible to debug issues like this:
  $ cinder credentials
  ERROR: list indices must be integers, not str

Related-Bug: #1631142

Co-Authored-By: Gorka Eguileor <geguileo@redhat.com>
Change-Id: I5e9b3283602d404ab43494f15d57ec5abbcd77dc
2016-10-11 11:17:26 -04:00
Gábor Antal
aa1c3e82dd Removed multiple import from shell.py
In shell.py, six is imported twice.
In this patchset, one of them is removed.

TrivialFix

Change-Id: Ifbf6dcb20d5de54855aab53538b57eb11185ab2b
2016-09-20 11:30:20 +00:00
Gorka Eguileor
8b5a772e36 Make APIVersion's null check more pythonic
Our current APIVersion object has an is_null method to check when the
version instance is null (major=0 and minor=0).

While this works it is not very pythonic, since you have to write
expressions such as:

 if not min_version and not max_version:
     return True
 elif ((min_version and max_version) and
       max_version.is_null() and min_version.is_null()):
     return True

This patch removes the is_null method and instead implements the truth
value testing to simplify expressions and make code more pythonic.

So previous code would just look like:

 if not min_version and not max_version:
     return True

Because this will work with min_version being None or being an
APIVersion instance with major=0 and minor=0.

Change-Id: I7497c5dc940c1e726507117cadbad232d8c1d80d
2016-08-29 11:41:57 +02:00
Cao Shufeng
b76f594413 Add "start_version" and "end_version" support to argparse
Now, "cinder help subcommand" can not show whether an argument
is supported for a specific microversion.
With this change, developers only need to add a start_version or
end_version in the utils.arg wrap, cinderclient will support
the microversion for that arguement.

    @utils.arg(
    '--foo',
    start_version='3.1')
    @utils.arg(
    '--bar',
    start_version='3.2',
    end_version='3.5')
    def do_some_action():
        ......

In previous example, an exception will be raised for such command:
   $ cinder --os-volume-api-version 3.6 --bar some-ation

And only "--foo" will show up for such help command:
   $ cinder --os-volume-api-version 3.1 help some-ation

Change-Id: I74137486992846bbf9fdff53c009851db2356eef
Partial-Bug: #1600567
Co-Authored-By: Nate Potter <nathaniel.potter@intel.com>
2016-08-16 16:16:13 +00:00
dineshbhor
a635fd2199 Use 'six' instead of oslo_utils.strutils.six
'six' is an independent third party module so it doesn't
need to be imported and used from oslo_utils.strutils.

TrivialFix

Change-Id: Icb3232bb1ebae0e8332e66c5806474d7f9dfd6df
2016-08-08 09:22:29 +00:00
dineshbhor
29028b86b9 Use self.ks_logger instead of ks_logger
Currently with '--debug' option any cinder command only logs the
request from keystoneauth and not the main cinder service request.

Added keystoneauth logger to self.ks_logger so that logs can be
logged as expected.

Closes-Bug: #1606814

Change-Id: I7193aa6f43cb3186c49fc409b6e1ce7a36f596f9
2016-08-01 11:11:47 +05:30
Steve Martinelli
16f83c4a53 Switch to keystoneauth
move cinderclient to keystoneauth as keystoneclient's auth session,
plugins and adapter code has been deprecated.

Co-Authored-By: Paulo Ewerton <pauloewerton@lsd.ufcg.edu.br>
Co-Authored-By: Sean McGinnis <sean.mcginnis@gmail.com>
Co-Authored-By: Jamie Lennox <jamielennox@gmail.com>

Change-Id: Id4bf0e2088e8ad99e83cd4f9b8549c2aca1f65a2
2016-07-23 07:35:40 +10:00
Jenkins
b36ff1fc15 Merge "Fix authentication issue" 2016-07-15 20:58:36 +00:00
Jenkins
d96cc9fc08 Merge "OS_TENANT_NAME is not required when we have OS_PROJECT_NAME" 2016-07-15 20:58:19 +00:00
liyuanzhen
426055c48e OS_TENANT_NAME is not required when we have OS_PROJECT_NAME
Cinder support both v2 and v3 auth. Use v3 if possible.
In consideration of backwards compatibility, when we have
OS_PROJECT_NAME, the v2 auth should be ok because
tenant_name can be set by env[OS_PROJECT_NAME].


Change-Id: I9eed9c41a9deb5ecafa8d9e12f6d1b50d34f986d
Closes-Bug: #1588261
2016-07-07 07:01:30 +00:00
Abhishek Kekane
679cdd2451 Log request-id for each api call
Added new private method to log request-id of each api call
for both SessionClient and HTTPClient. Already available
ks_logger and client_logger will be used for SessionClient
and HTTPClient respectively.

Change-Id: I679c57b96071ecd9bcd1ab2ed50692195586ca52
Implements: blueprint log-request-id
2016-06-28 08:44:23 +00:00
Jenkins
a4109cc3bf Merge "Support --os-key option" 2016-05-18 14:46:23 +00:00
Cedric Brandily
80d3edc71e Support --os-key option
Currently we can specify a client certificate key using --os-key option
inherited from keystoneclient cli options but it has no effect because
keystoneclient Session expects as cert argument, one of the followings:
 * None (no client certificate),
 * a path to client certificate,
 * a tuple with client certificate/key paths.

The change updates cinderclient code to support the last case (ie:
os_cert and os_key are non-empty) in order to take into --os-key option
and OS_KEY environment variable.

Closes-Bug: #1564646
Change-Id: I258fd554ad2d6a5413ffe778acefa3a0b83e591f
2016-05-17 15:02:00 +02:00
Abhijeet Malawade
24deab1090 Fix authentication issue
Fix authentication issue if password is provided from tty prompt.
Set options.os_password to user input from prompt, as it gets
used to create auth object otherwise it will give authentication error.

Change-Id: I0246473f2165f1464d731e0ae9b4afa0b61dcbcc
Closes-Bug: #1575656
2016-04-27 06:37:19 +05:30
scottda
3f75b48f06 Support api-microversions
Changes to cinderclient to use microversions.

Implements: blueprint api-microversion-support-for-cinderclient
api-microversion-support-for-cinderclient

Change-Id: I840a1162b88e8ff36fa3fc4e1d6b9317104df3e0
2016-04-19 11:19:45 -06:00
scottda
27e6f6f7f8 Add /v3 endpoint support for cinderclient
Add support for Cinder API /v3 endpoint.
A couple of unit tests for /v3 endpoint were added to v3/test_shell.py
to ensure that the v3 shell works, and to also test that modules work
with:
from cinderclient.v2.availability_zones import *
syntax.

Change-Id: I6ae0ada221bebb4ab1850d9c99b10fcbb585201f
Implements: https://blueprints.launchpad.net/python-cinderclient/+spec/add-v3-endpoint-support
2016-04-18 10:49:51 -06:00
Ronald Bradford
74252d1abd Graduate to oslo.i18n and cleanup incubator usage
Graduate from Oslo Incubator to oslo.i18n library.
Cleanup of unused Oslo Incubator utils.
Added optional enable_lazy() usage.

Implements: blueprint graduate-oslo-i18n [1]
https://blueprints.launchpad.net/oslo-incubator/+spec/graduate-oslo-i18n

Change-Id: I9c8db9487b554b637a41620c858a7e7abf802879
2016-03-24 11:40:38 -04:00