144 Commits

Author SHA1 Message Date
TerryHowe
b3335b3474 Do not set default versions in parsed args
Setting default versions in parsed args makes it so OCC
cannot tell if the argument was parsed, an environment
variable was set or it is just defaulted.  In order to
set api versions from OCC, it will have to be defaulted
after processing OCC.

Closes-Bug: #1453229
Change-Id: I4d065919397b783f3bdd4022c986c0234a7a16e6
2015-07-18 06:28:09 -06:00
TerryHowe
36391a81a3 Rename endpoint type to interface
Change-Id: I4e21d09bc747e8210f4f79a1d6c4c7ccf2f25d1c
Closes-Bug: #1454392
2015-07-15 10:11:59 -06:00
Jenkins
ee64c2fa6b Merge "Add --os-endpoint-type cli optional argument" 2015-07-03 02:48:47 +00:00
Roxana Gherle
5521e4c504 Add --os-endpoint-type cli optional argument
User should be able to specify the endpoint type through
a CLI optional argument/ENV variable setting. We will name this new
optional argument: --os-endpoint-type (Env: OS_ENDPOINT_TYPE) and
based on the value given, the service API will use that specific
endpoint type. Possible values: public, admin, internal.

DocImpact
Closes-Bug: #1454392
Change-Id: Ife3d4e46b44c0ddcd712b1130e27e362545a9a29
2015-07-02 10:10:46 -07:00
Dave Chen
b3289601c7 Fix the typo in openstackclient/shell.py
Change-Id: Ia101f6d50ecd4a195aa93b1f289def581b0c6f38
2015-06-14 14:59:38 +08:00
Dean Troyer
31d785ec69 Allow --insecure to override --os-cacert
Change --insecure to ignore the --os-cacert setting.  This is a change
from before where OSC followed the requests pattern of cacert taking
priority.

This logic is also introduced in os-client-config 1.3.0; we
do not require that release yet so it is duplicated here for now.
That change will come with the upcoming global options refactor.

Closes-Bug: #1447784
Change-Id: Iaa6d499ed0929c00a56dcd92a2017487c702774a
2015-06-04 09:37:46 -05:00
Dean Troyer
a05cbf4c99 Rework shell tests
This is the first step in reworking the shell argument handling,
clean up and add tests to ensure functionality doesn't change.

* Rework shell tests to break down global options and auth options.
* Make tests table-driven
* Remove 'os_' from 'cacert' and 'default_domain' internal option names

Change-Id: Icf69c7e84f3f44b366fe64b6bbf4e3fe958eb302
2015-06-02 09:49:17 -05:00
Jenkins
9bf24f3ae1 Merge "Set tenant options on parsed namespace" 2015-06-02 02:15:52 +00:00
Jamie Lennox
3ae247fdce Set tenant options on parsed namespace
Because of the way OSC registers all plugins together we end up
with os-tenant-X parameters being saved to the project-X attribute after
parsing. If you are using the v2 plugins directly then they and os-client-config
expect the tenant_X values and will assuming no scoping information if
they are not present.

Validating options for scope will also fail in this situation, not just
because the resultant auth dictionary is missing the tenant-X
attributes, but because OSC validates that either project or domain
scope information is present.

Fix this by just always setting the v2 parameters if the v3 parameters
are present. This will have no effect on the generic or v3 case but fix
the v2 case.

Expand validation to include the tenant options so it knows that v2
plugins are scoped.

Change-Id: I8cab3e423663f801cbf2d83106c671bddc58d7e6
Closes-Bug: #1460369
2015-05-31 15:03:42 +10:00
Dean Troyer
2c4b87869b Add cli tests for --verify and friends
The tests that will change after the verify-always-true bug is fixed
are currently commented out.  The commented asserts show where we
want to go.

Also fixes --verify parser value

Change-Id: I891e3ead5fc3da3ed2ecba5d2befd9e910778655
2015-05-28 18:01:49 -05:00
Terry Howe
12f1bdde2a Fix insecure/verify options
The insecure and verify options are broken so that verify always
gets set to True.  One problem was that the parsed args not
defaulted so os_cloud_config thinks there was always a command
line specified.  The other problem was getattr was called on cloud
config instead of get.

Closes-Bug: #1450855
Change-Id: Ib5f004f51a7453cc8f5a89759e2031ec42e04a30
2015-05-17 08:52:03 -06:00
Dean Troyer
cf52e722c0 Minor logging/debug cleanups
This removed the rarely useful cliff command list from the debug output.

Change-Id: I48f22086733acf90e79a6ddac8712734ee2d0b60
2015-04-28 18:15:24 -05:00
Juan Antonio Osorio Robles
48b52a0d40 Raise exception if no session is created
If the clientmanager is unable to create a keystone session (due to
insufficient auth parameters or something else) then the exception
caused by this shouldn't be ignored, as was the case.

On the other hand, we don't want this behaviour in the case of the
'complete' command, so this is now properly detected.

Change-Id: If4f453d23cc87900cda752e9ffbcf41ded59e26f
Closes-Bug: #1444640
2015-04-27 16:54:28 +03:00
Dean Troyer
5649695c65 Add --os-cloud support
This adds a new option --os-cloud that allows the configuration values
for multiple clouds to be stored in a local file and selected with
a single option.

Internal option names have had 'os_' removed to be comptible with
the options returned from OpenStackConfig().get_one_cloud().

The config file is ~/.config/openstack/clouds.yaml:

Sample
------
clouds:
  devstack:
    auth:
      auth_url: http://192.168.122.10:35357/
      project_name: demo
      username: demo
      password: 0penstack
    region_name: RegionOne
  devstack:
     auth:
       auth_url: http://192.168.122.10:35357/
       project_name: demo
       username: demo
       password: 0penstack
     region_name: RegionOne

Co-Authored-By: Monty Taylor <mordred@inaugust.com>
Change-Id: I4939acf8067e44ffe06a2e26fc28f1adf8985b7d
Depends-On: I45e2550af58aee616ca168d20a557077beeab007
2015-04-18 23:04:51 -05:00
Jenkins
2ea6f10691 Merge "Suppress warnings user can't fix" 2015-04-18 07:12:03 +00:00
Jenkins
fbb7641694 Merge "Print warning on authentication error" 2015-04-18 05:27:26 +00:00
Jenkins
cb681706fa Merge "Fix session timing" 2015-04-17 20:47:55 +00:00
TerryHowe
15bc2ccec9 Print warning on authentication error
At least print a warning on authentication error.  I have no
idea why an exception is being ignored here because if there
is no session, nothing is going to happen.  This at least will
print some useful warning:

    (.venv)terry@f350:~/python-openstackclient$ os flavor list --os-cloud pro
    WARNING: openstackclient.shell Possible error authenticating: __init__() got an unexpected keyword argument 'asdf'
    ERROR: openstack Authentication requires 'auth_url', which should be specified in 'HTTPClient'

This error was caused by having a bogus value 'asdf' in the cloud.yaml
for the cloud pro.

Change-Id: Ie08432e0464cfa86b3b3f67ca29d3b7d23d2f46f
2015-04-17 07:54:05 -06:00
Jenkins
8b44d34054 Merge "Use cliff deferred help instead of homemade one" 2015-04-14 22:14:13 +00:00
TerryHowe
a0fe37e189 Add warning message if unknown version supplied
Print a warning message if an unknown api version is supplied.
An attempt will be made to run the command anyway.

Change-Id: Idec8e88fe9621f10ec4b7eecd90708fb3730f56f
2015-04-13 16:21:50 -06:00
Dean Troyer
0d689871b4 Fix session timing
Subclass keystoneclient.session.Session to add the timing hooks to
record the elapsed time returned by requests.Response objects, including
the redirection history.  Redirects are included individually and not
rolled into the total time for the original request.

This works for all clients that use OSC's session.

Closes-Bug: #1402577
Change-Id: I9360c90c151579b89a37edb8c11c17feb15b3cb9
2015-04-07 23:53:31 -07:00
Dean Troyer
ec4ef5f5ba Suppress warnings user can't fix
Requests/urllib3 started issuing warnings about certificates and SSL
that our users are unable to do anything about.  This is a very blunt
way to suppress these warnings unless --verbose or --debug is
supplied on the command line.

Being more precise in the suppression requires importing the warning
classes from urllib3 and dealing with the platforms where it has
been unvendored from requests.  Maybe in the future if there are
concerns that this mutes too much otherwise.

Change-Id: I50bb10a16222de12c5b95bfe042b92e43ea8ee7c
2015-04-02 12:59:34 -05:00
Cedric Brandily
8e92dfc2a5 Use cliff deferred help instead of homemade one
This change removes openstackclient homemade hack to defer help
printing in initialize_app and uses cliff (new) option to defer
help printing.

Change-Id: Ie3e94ec96254745bfef8c5ff5abc405facfe1bea
Related-Bug: #1316622
2015-03-17 23:44:53 +01:00
Dean Troyer
749920bc65 Move OSC auth plugins so they can be found
The plugin detection at the top of openstackclient.api.auth did not
detect the plugins at the bottom of that file because, surprise,
they had not been declared yet so the entry points were ignored.

Move both plugin subclasses into openstackclient.api.auth_plugin.

Fix a problem with the password callback that was otherwise made
worse with this change.

Closes-Bug: 1428912
Change-Id: Idc3b72534071e0013c8922884a8bc14137509a0f
2015-03-10 03:16:12 +00:00
Dean Troyer
505fa14cd6 Fix auth-required for help command
When we got picky with the auth arguments we broke using help without
any auth config supplied.  This rearranges things a bit to do the argument
checking when the deferred auth request to Identity occurs so commands
that do not need auth have a chance to live short but useful lives.

Closes-Bug: #1399588
Change-Id: I8ceac491cf65e25eddb62ab2713f471fe686756d
2015-02-27 17:27:17 -06:00
Dean Troyer
bc11c4d7d8 Deprecate project usage list command
Rather than pointing the 'project usage list' entry point directly to
ListUsage, this makes a ListProjectUsage subclass to alias the desired
command and still allow for changing behaviour or issuing a deprecation
messages.  This implementation simply sets a new 'deprecated' attribute
in the command class that cliff will use to skip this command when
generating help output.

The actual skipping of the command in help output is dependant on
https://review.openstack.org/147349 merging in cliff, this review will
simply have no effect on help output until a version of cliff with
that update is present.

The deprecation message printed is somewhat generic until
https://review.openstack.org/147381 is merged in cliff.
Until that is merged, the deprecation message will not have the name
of the actual command given by the user in it, but rather the text
'this command'.

Closes-bug: #1406654
Change-Id: Ie08d4f88d71a660fca1862405351109cd0aa86b6
2015-01-15 00:04:55 -06:00
Dean Troyer
2b02beaa51 Liberalize version matching a bit
For class-loading purposes we can just use the major version,
so accept that. Only Identity and Compute were affected; Compute
is included just to be pedantically complete.

For command groups we also just use the major version so fix
Compute and the version option handling.

Change the internal default for Identity to a simple '2' so it
is also consistent with the rest of the world.

Then comes microversioning...

Closes-Bug: #1292638
Change-Id: Ibaf823b31caa288a83de38d2c258860b128b87d8
2014-11-16 11:37:52 -06:00
Dean Troyer
8ba74451ee Adjust some logging levels
* Promote select messages to INFO so lower logging levels can be useful
* Help more modules not say so much all the time

Change-Id: I814023c1489595998ae74efe40ef439b3522ee74
2014-10-24 13:16:41 -05:00
Dean Troyer
e063246b97 Clean up shell authentication
* Remove the auth option checks as the auth plugins will validate
  their own options
* Move the initialization of client_manager to the end of
  initialize_app() so it is always called.  Note that no attempts
  to actually authenticate occur until the first use of one of the
  client attributes in client_manager.  This leaves
  initialize_clientmanager() (formerly uathenticate_user()) empty
  so remove it.
* Remove interact() as the client_manager has already been created
  And there is nothing left.
* prepare_to_run_command() is reduced to trigger an authentication
  attempt for the best_effort auth commands, currently the only
  one is 'complete'.
* Add prompt_for_password() to ask the user to enter a password
  when necessary.  Passed to ClientManager in a new kward pw_func.

Bug: 1355838
Change-Id: I9fdec9144c4c84f65aed1cf91ce41fe1895089b2
2014-10-21 23:16:16 -05:00
wanghong
f600c0eafb only generate one clientmanager instance in interactive mode
Currently, we repeated to generate clientmanager instance when run
command in interactive mode. This should be avoided.

Change-Id: I0536a690bc173be38af08a2e4443115532041efd
Closes-Bug: #1383083
2014-10-20 15:29:53 +08:00
Dean Troyer
897418edca Move plugin stuff to clientmanager
The OSC plugins work by adding an object as an attribute to a
ClientManager instance.  The initialization and management of
thos plugins belongs in clientmanager.py.

At this point the only part not moved is the API version dict
initialization bcause the timing and connection to the
CommandManager initialization.  It gets refactored anyway when
API discovery becomes operational.

Change-Id: If9cb9a0c45a3a577082a5cdbb793769211f20ebb
2014-10-13 23:02:34 -05:00
Matthieu Huin
0c77a9fe8b Support for keystone auth plugins
This patch allows the user to choose which authentication plugin
to use with the CLI. The arguments needed by the auth plugins are
automatically added to the argument parser. Some examples with
the currently available authentication plugins::

  OS_USERNAME=admin OS_PROJECT_NAME=admin OS_AUTH_URL=http://keystone:5000/v2.0 \
  OS_PASSWORD=admin openstack user list

  OS_USERNAME=admin OS_PROJECT_DOMAIN_NAME=default OS_USER_DOMAIN_NAME=default \
  OS_PROJECT_NAME=admin OS_AUTH_URL=http://keystone:5000/v3 OS_PASSWORD=admin \
  OS_IDENTITY_API_VERSION=3 OS_AUTH_PLUGIN=v3password openstack project list

  OS_TOKEN=1234 OS_URL=http://service_url:35357/v2.0 \
  OS_IDENTITY_API_VERSION=2.0 openstack user list

The --os-auth-plugin option can be omitted; if so the CLI will attempt to
guess which plugin to use from the other options.

Change-Id: I330c20ddb8d96b3a4287c68b57c36c4a0f869669
Co-Authored-By: Florent Flament <florent.flament-ext@cloudwatt.com>
2014-10-09 12:34:47 +02:00
Steve Martinelli
693687e4ff Remove duplicate env function in shell.py
There already exists an env() function in utils. Let's use that
one since it's common.

Change-Id: I661984394cf0c0543b2f35bf76e3929dead54d1d
2014-10-02 23:09:34 -04:00
Steve Martinelli
1212ddb431 Remove unused reference to keyring
There's a unnecessary reference that is not being used.

Change-Id: I5ac85d2331385e4a31970b63fd17e650f82046ca
2014-09-23 16:43:31 -04:00
Jenkins
dc9ce6d608 Merge "Change app.restapi to app.client_manager.session" 2014-09-06 21:46:40 +00:00
Dean Troyer
1ab38679b6 Make Identity client load like the others
This does a couple of things:
* Loads the Identity client module in the same manner as the other
  'base' clients (where 'base' == 'included in the OSC repo')
* Changes the entry point group name for the base clients to
  'openstack.cli.base'.  The extension group name remains the same.
* Loads the base modules first followed by the extension modules.
  This load order ensures that the extension module commands are all
  loaded _after_ the base commands, allowing extensions to now override
  the base commands.

Change-Id: I4b9ca7f1df6eb8bbe8e3f663f3065c2ed80ce20b
2014-08-28 08:29:32 -05:00
Dean Troyer
4bbd03210f Change app.restapi to app.client_manager.session
This is step 1 toward using Keystone client's session.Session as the
primary session/requests interface in OSC.

* Move the session create into ClientManager and rename 'restapi' attribute to 'session'
* Set up ClientManager and session loggers
* Fix container and object command references to restapi/api

Change-Id: I013d81520b336c7a6422cd22c05d1d65655e64f8
2014-08-25 13:38:03 -05:00
Dean Troyer
4844a25779 Add basic timing support
Add support for --timing options.  Use cliff via a pseudo-command
'Timing' to support multiple outputformats.

If an output format other than the default 'table' is selected
use CSV since the timing data is in list form.

Will pick up timing data for any client object that has a method
similar to novaclient's get_timings().

TODO:
* Stop instantiating all of the clientmanager client objects just
  to check for timing data.  Descriptor magic required?

Change-Id: I7f1076b7a250fba6a8b24b2ae9353a7f51b792b2
2014-07-08 02:04:00 -05:00
Jenkins
b3736fd9df Merge "Remove keyring support from openstackclient" 2014-07-04 19:45:30 +00:00
Alex Gaynor
b8f534df01 Remove keyring support from openstackclient
* The encryption it purports to offer is completely insecure.
* It also appears to be broken.

Closes-Bug: #1319381
Change-Id: Id15ecfbbfd15f142b14c125bfd85afd5032699ac
2014-07-04 01:56:18 +00:00
Matthieu Huin
5672c688d1 trust authentication
This patch enables authenticating by using a trust. The trust ID
must be set with the parameter --os-trust-id or the env variable
OS_TRUST_ID. Trusts are available for the identity v3 API.

Co-Authored-By: Florent Flament <florent.flament@cloudwatt.com>
Change-Id: Iacc389b203bbadda53ca31a7f5a9b8b6e1a1f522
2014-07-03 10:12:02 +02:00
Dean Troyer
a78d75f290 Fix PEP8 H405 errors
Change-Id: Id9ea03e7d88148f84bffe1b18b5b4315e6123012
2014-06-27 09:12:38 -05:00
Dean Troyer
67354f651b Clean up logging levels
The following logging levels are set according to the combination of
--verbose, --quiet and --debug options:

verbose_level   logging level       options
0               --quiet             ERROR
1               (none)              WARNING
2               --verbose           INFO
3+              --verbose --verbose DEBUG
                or --debug

Logging levels for the requests and iso8601 modules are forced to ERROR.

This is the first step in bp use-logging-not-print

The difference between '--debug' and '--verbose --verbose' is --debug triggers
cliff's exception handling and traceback display.

Change-Id: Ide2233b3316471d279260fb1e7255a6ca2072023
2014-06-13 17:15:17 -05:00
Christian Berendt
3b485de6b0 replace string format arguments with function parameters
There are files containing string format arguments inside
logging messages. Using logging function parameters should
be preferred.

Change-Id: Ic749ac9eb55564ed631d57055a5a4dfc3aebd169
2014-05-20 13:49:56 +02:00
Terry Howe
211cd31d7a Make bash comple command best effort to authorize
If authorization fails for the complete command, generate the bash complete anyway.
* Added best_effort flag to command
* Attempts to authorize for bash complete, but if it fails, it tries anyway

Change-Id: I796258f8044f42abc6a51164d920a26f73397962
Partial-Bug: #1283550
2014-03-06 18:41:37 -07:00
Andreas Jaeger
5043293156 Fix some help strings
This fixes some errors and inconsistencies I found reviewing the
help strings:
* Capitalize help strings
* Add missing space between words (in multi-line strings)
* Improve wording

Change-Id: I2fb31ab4191c330146e31c1a9651115a6657769a
2014-02-21 19:40:41 +01:00
Paul Belanger
420b10ee6d Add support for specifying custom domains
Add the ability to pass user_domain_id / user_domain_name, domain_id
/ domain_name, and project_domain_id / project_domain_name to keystone.
These parameters are the first step needed to getting multi-domain
support working via the CLI.

Closes-Bug: #1198171
Change-Id: I81a8534913978ff1cce01ec02741ae477e8c5fa4
Signed-off-by: Paul Belanger <paul.belanger@polybeacon.com>
Signed-off-by: Bo Tang <btang@cs.utsa.edu>
2014-01-07 16:50:20 -06:00
Jenkins
facdc8704e Merge "Bring RESTApi closer to ithe imminent keystoneclient.Session" 2013-12-06 22:48:29 +00:00
Dean Troyer
f2dbe2e437 Bring RESTApi closer to ithe imminent keystoneclient.Session
Prepare to use the (soon to be) common Session from keystoneclient
* Rework RESTApi to eventually be a subclass of keystoneclient.Session

Change-Id: I68e610f8b19a3f6267a93f7bf3de54a228be68aa
2013-12-03 14:26:46 -06:00
Terry Howe
5dcc3b6164 Add return Closes-Bug: 1246356
Change-Id: I70999a91062b9c61e5f420b1ed33a45086b62fd4
2013-11-27 14:25:12 -07:00