60 Commits

Author SHA1 Message Date
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
Dean Troyer
9062811d10 Expand support for command extensions
Allows client libraries to have complete access to the rest of the
OSC ClientManager.  In addition, extension libraries can define
global options (for API version options/env vars) and define
versioned API entry points similar to the in-repo commands.

The changes to ClientManager exposed some issues in the existing
object api tests that needed to be cleaned up.

Change-Id: Ic9662edf34c5dd130a2f1a69d2454adefc1f8a95
2013-11-21 01:27:10 -06:00
Terry Howe
98eaccc431 change execute to run
Change-Id: I23a210c8771c206df14d2713a2e72ccd92402c43
2013-11-16 05:47:32 -07:00
Dean Troyer
3f9c68f1c6 Add options to support TLS certificate verification
Add --os-cacert and --verify|--insecure options using the same
sematics as the other project CLIs.  --verify is included for
completeness.

Bug: 1236608

Change-Id: I8a116d790db5aa4cb17a2207efedce7cb229eba3
2013-10-07 18:17:48 -05:00
Dean Troyer
6fe687fdf6 Delay authentication to handle commands that do not require it
* Move the auth to OpenStackShell.prepare_to_run_command() and skip it if
  the command's auth_required == False
* Default auth_required = True for all commands
* Do authentication up-front for interactive use as
  OpenStackShell.prepare_to_run_command() is not called

Change-Id: Id330092f242af624f430d469882d15f4a22f4e37
2013-09-12 16:23:14 -05:00
Dean Troyer
725e2543ef Object API commands using our REST API layer
* Add object-store API to ClientManager
* Add object-store client
* Add Object API library in openstackclient.object.v1.lib
* Add Object API {container,object} list commands
* Add library tests
* Add command tests

This should complete the Object v1 container and object list commands

Change-Id: Ib1770d45efa8871959826b85faafa1e0bcef0a03
2013-08-28 22:16:34 -05:00
Dean Troyer
17f13f7bf4 Create a new base REST API interface
* restapi module provides basic REST API support
  * uses dicts rather than Resource classes
  * JSON serialization/deserialization
  * log requests in 'curl' format
  * basic API boilerplate for create/delete/list/set/show verbs
* ignore H302 due to urllib import

Change-Id: I3cb91e44e631ee19e9f5dea19b6bac5d599d19ce
2013-08-23 12:08:32 -05:00
Dean Troyer
af87489022 Change version reporting to use pbr
Gets rid of the hard-coded version string in shell.py

Change-Id: I8b818c9a8f1224669079141e7a7caf614e588d20
2013-08-02 12:11:49 -05:00
Jenkins
0cc5811122 Merge "Prep for 0.2 release (0.2.rc1)" 2013-08-01 22:51:30 +00:00
Dean Troyer
6f9dcc13f6 Prep for 0.2 release (0.2.rc1)
* rename HACKING to HACKING.rst and refer to the common OpenStack HACKING file
* add the barest of pointers to the wiki, etc. to the source docs
* add a bare-bones man page

Change-Id: I80e5b972af645f14ef17ae87f182ab09cb08dabe
2013-08-01 16:21:22 -05:00
Dean Troyer
0aa3c206a3 Remove tenant round 1 - global options
Change the global auth options to use 'project', leave the original
tenant options in place but silent for compatability with the existing
project CLI auth options.  This is the only compatibility for tenant
usage in this changeover.

Change-Id: I3cce6e552f18822cc9f445ec5f301b0f5d9003f8
2013-07-31 10:07:50 -05:00
Jenkins
7b47579dad Merge "Complete Image v1" 2013-07-20 20:17:00 +00:00
Dean Troyer
cdaee1b71e Complete Image v1
* Add v1 versions of image delete, list, save, set, show
* Change default Image API to v1

Rebased for https://review.openstack.org/#/c/36772/

Change-Id: Ie2bfe660aac8a0fcf651c67fd1ea4842e76ce377
2013-07-18 14:14:14 -05:00
Dean Troyer
75dcdb0c66 Add show limits command
* This is a combination of the compute and volume API limits as they are
  very similar.  As such, the command lives in a new command group
  'openstack.common' that is unversioned.
* Implements 'limits show [--absolute|--rate]

Updated for https://review.openstack.org/#/c/36772/

Bug: 1172057

Change-Id: I2bd181cd0d098f7143360ae67944c2f221379af5
2013-07-12 12:13:27 -05:00
Steve Martinelli
f29a849ffc Finish up v3 role commands
* Add remove role
* Add --role to group list
* Add --role to user list
* Fix groups in AddRole()
* Remove the tweaks to utils.find_resource for domains; will address
  that across domains, projects, users and groups in another patch.
  I want to nail down the structure of these commands and get that into place

Change-Id: I8673dd8221ef88978dada5a2833c187026bdb31a
2013-07-03 11:51:23 -05:00
Monty Taylor
967d929207 Migrate to flake8.
Fixes bug 1172444

Change-Id: Ieca721663aea2fd31753df4abfb5b01a7145b26a
2013-05-16 10:36:02 -07:00
Monty Taylor
016a0b301e Fix flake8 errors in anticipation of flake8 patch.
Change-Id: Ifdc4322b699f2bd91a6900e55695acd3d736568e
2013-05-14 08:28:48 -07:00
Jenkins
512cccc78c Merge "Add a simple extension hook" 2013-03-27 15:04:10 +00:00
Dean Troyer
4fd5dd3b1a Add a simple extension hook
This enables stand-alone modules to hook in to the command-line
handler in a dedicated API namespace.  These extensions have access
to the existing clients via the client manager but no way to add
another client to the manager is provided..

blueprint client-extensions

Change-Id: I4b2eaa780d8ba881db23d950d09b8702e9e314ef
2013-03-15 15:18:22 -05:00
Dean Troyer
13d88407d6 Turn down requests logging level
Looks like the default is INFO, we don't need to see that unless
--debug is specified.

Change-Id: Ieee5d4dc5102f11536ecc6330461f86101811f9e
2013-03-09 00:49:52 -06:00
Josh Kearney
237f0dd612 Correct the version mapping to image service.
This was preventing image support from being activated.

Change-Id: I1b7ab9174b90c55423b244ca63402d33b4411a49
2013-02-19 09:19:52 -06:00
Steve Martinelli
7072b4f802 Add Cinder API V1 Support
made the changes suggested by dtroyer
added client
modified setup.py entry points
updated pip required
added support for create/delete/list volume types
openstack list type
openstack create type typeName
openstack delete type typeNameOrId

Change-Id: I43655de151582e37f14dc9550151a66db7a009ab
2013-02-08 10:22:01 -06:00
Dean Troyer
fbc412e533 Multiple API version support
* Use multiple entry point groups to represent each API+version
  combination supported
* Add some tests

Try it out:
* Right now only '* user' commands have multiple overlapping versions;
  you can see the selection between v2.0 and v3 by looking at the
  command help output for 'tenant' vs 'project':

  os --os-identity-api-version=2.0 help set user
  os --os-identity-api-version=3 help set user

Change-Id: I7114fd246843df0243d354a7cce697810bb7de62
2013-02-06 11:36:28 -06:00
Josh Kearney
b26cb5bf68 Upgraded to PEP8 1.3.3 to stay aligned with Nova, etc.
Made all the necessary changes to pass new PEP8 standards.

Also cleaned up docstrings to conform to the HACKING stanards.

Change-Id: Ib8df3030da7a7885655689ab5da0717748c9edbe
2013-01-31 13:31:41 -06:00
Josh Kearney
0a4912f9fb Standardize on a copyright header and ensure all files have them.
Change-Id: I64812bca01ca655c9cf9239a0daea84907082a29
2013-01-24 12:02:23 -06:00
Bhuvan Arumugam
f0cefcc77d Keyring support for openstackclient.
Bug: 1030440

If password is defined in keyring, use it; otherwise, prompt for the
password. Keying is configured using command line switch,
--os-use-keyring or env(OS_USE_KEYRING).

* openstackclient/common/openstackkeyring.py
  The abstract class for keyring, specifically for openstack. The
  class is used to store encrypted password in keyring, without
  prompting for keyring password. The encrypted password is
  stored in ~/.openstack-keyring.cfg file.

* openstack-common.py
  Update openstackkeyring library from openstack.common.

* openstackclient/shell.py
  OpenStackClient.build_option_parser(): New boolean argument,
   --os-use-keyring, default to env(OS_USE_KEYRING).
  OpenStackClient.authenticate_user(): Get password from keyring,
  if it is defined; otherwise, prompt for the password. If user
  enter a password and keyring is enabled, store it in keyring.
  OpenStackClient.init_keyring_backend(): New method to define
  openstack backend for keyring.
  OpenStackClient.get_password_from_keyring(): New method to
  get password from keyring.
  OpenStackClient.set_password_in_keyring(): New method go set
  password in keyring.

* toos/pip-requires
  Define keyring and pycrypto as one of dependent.

Change-Id: I36d3a63054658c0ef0553d68b38fefbc236930ef
2012-08-15 12:13:36 -07:00
Ken Thomas
39da32b3a5 If no password in env or command line, try prompting.
Implements blueprint password-prompt

This logic was recently added to keystone as a short term fix. The long
term fix is to have that same logic here. Basically, if no password is
present in the env or command line and there's a tty available for us
to prompt, then attempt to use getpass.

Change-Id: Ia0eec800b96c8f6ca1c2540e21e0e03c3880c713
2012-06-29 22:29:46 +00:00
Clark Boylan
6a8302b532 Fix pep8 issues.
Fix several pep8 issues and pin the pep8 test to pep8 version 1.1.
This should prevent future changes from being unmergable by the pep8
gate after a pep8 upgrade.

Change-Id: I4678a9179579fb5c7afe795fb43a8a89a99ad717
2012-06-13 10:49:43 -07:00
Jenkins
fd8197de6d Merge "fix authentication setup in interactive mode and improve error handling so tracebacks are not printed twice" 2012-05-15 19:12:33 +00:00
Doug Hellmann
8939d26a5b fix authentication setup in interactive mode and improve error handling so tracebacks are not printed twice
Change-Id: I59fb07369edad3b2f2abddba3c0d0f6bbce1eab1
2012-05-14 10:50:57 -04:00
Dean Troyer
f485d71222 Revise command boolean flags
* use --enable|--disable form for boolean 'enabled' value
* clean up logging strings

Change-Id: Ib4016bbef1763c27ec5a9edf36b926dc0d0b265c
2012-05-11 17:27:03 -05:00
Dean Troyer
fa4a4a37d6 Move get_client_class() to common.utils
* add constants for API_NAME

Change-Id: I8ccf72f032227e0a452d96303181549b1b11a5d1
2012-05-11 13:49:45 -05:00
Dean Troyer
712a8c7f9c Add API versioning support
* Specific versions supported are managed in XXXXXX.client.py with a
  mapping from version to client class.  This is based on the scheme
  that is included in novaclient; none of the other client libs have
  that capability.

Change-Id: I930b197f1189e7f52c3b0096e73e0773cf925542
2012-05-10 15:52:15 -05:00
Doug Hellmann
bf582a2d56 look at the command the user is going to run before trying to authenticate them
Change-Id: I4edc6a0f1e16be4cd80fe01f62869094b50ef120
2012-05-10 16:05:23 -04:00
Dean Troyer
3b2129f0b8 Add copyright notices and update dates
Change-Id: I54a7d99328143205ab97ea930aeeeb69fe92c76c
2012-05-10 14:58:16 -05:00