summaryrefslogtreecommitdiff
path: root/openstackclient/shell.py
Commit message (Collapse)AuthorAgeFilesLines
* Deprecate project usage list commandDean Troyer2015-01-151-1/+2
| | | | | | | | | | | | | | | | | | | | | | | 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
* Liberalize version matching a bitDean Troyer2014-11-161-1/+2
| | | | | | | | | | | | | | | | | 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
* Adjust some logging levelsDean Troyer2014-10-241-14/+23
| | | | | | | * 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
* Clean up shell authenticationDean Troyer2014-10-211-118/+34
| | | | | | | | | | | | | | | | | | | | | * 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
* only generate one clientmanager instance in interactive modewanghong2014-10-201-5/+11
| | | | | | | | Currently, we repeated to generate clientmanager instance when run command in interactive mode. This should be avoided. Change-Id: I0536a690bc173be38af08a2e4443115532041efd Closes-Bug: #1383083
* Move plugin stuff to clientmanagerDean Troyer2014-10-131-15/+3
| | | | | | | | | | | | | 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
* Support for keystone auth pluginsMatthieu Huin2014-10-091-121/+43
| | | | | | | | | | | | | | | | | | | | | | | 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>
* Remove duplicate env function in shell.pySteve Martinelli2014-10-021-25/+12
| | | | | | | There already exists an env() function in utils. Let's use that one since it's common. Change-Id: I661984394cf0c0543b2f35bf76e3929dead54d1d
* Remove unused reference to keyringSteve Martinelli2014-09-231-2/+0
| | | | | | There's a unnecessary reference that is not being used. Change-Id: I5ac85d2331385e4a31970b63fd17e650f82046ca
* Merge "Change app.restapi to app.client_manager.session"Jenkins2014-09-061-8/+0
|\
| * Change app.restapi to app.client_manager.sessionDean Troyer2014-08-251-8/+0
| | | | | | | | | | | | | | | | | | | | | | 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
* | Make Identity client load like the othersDean Troyer2014-08-281-36/+19
|/ | | | | | | | | | | | | | 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
* Add basic timing supportDean Troyer2014-07-081-0/+33
| | | | | | | | | | | | | | | | | 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
* Merge "Remove keyring support from openstackclient"Jenkins2014-07-041-43/+0
|\
| * Remove keyring support from openstackclientAlex Gaynor2014-07-041-43/+0
| | | | | | | | | | | | | | | | * The encryption it purports to offer is completely insecure. * It also appears to be broken. Closes-Bug: #1319381 Change-Id: Id15ecfbbfd15f142b14c125bfd85afd5032699ac
* | trust authenticationMatthieu Huin2014-07-031-2/+26
|/ | | | | | | | | 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
* Fix PEP8 H405 errorsDean Troyer2014-06-271-3/+2
| | | | Change-Id: Id9ea03e7d88148f84bffe1b18b5b4315e6123012
* Clean up logging levelsDean Troyer2014-06-131-9/+44
| | | | | | | | | | | | | | | | | | | | | 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
* replace string format arguments with function parametersChristian Berendt2014-05-201-2/+3
| | | | | | | | There are files containing string format arguments inside logging messages. Using logging function parameters should be preferred. Change-Id: Ic749ac9eb55564ed631d57055a5a4dfc3aebd169
* Make bash comple command best effort to authorizeTerry Howe2014-03-061-1/+12
| | | | | | | | | 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
* Fix some help stringsAndreas Jaeger2014-02-211-5/+5
| | | | | | | | | | 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
* Add support for specifying custom domainsPaul Belanger2014-01-071-6/+57
| | | | | | | | | | | | 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>
* Merge "Bring RESTApi closer to ithe imminent keystoneclient.Session"Jenkins2013-12-061-1/+4
|\
| * Bring RESTApi closer to ithe imminent keystoneclient.SessionDean Troyer2013-12-031-1/+4
| | | | | | | | | | | | | | Prepare to use the (soon to be) common Session from keystoneclient * Rework RESTApi to eventually be a subclass of keystoneclient.Session Change-Id: I68e610f8b19a3f6267a93f7bf3de54a228be68aa
* | Add return Closes-Bug: 1246356Terry Howe2013-11-271-1/+1
|/ | | | Change-Id: I70999a91062b9c61e5f420b1ed33a45086b62fd4
* Expand support for command extensionsDean Troyer2013-11-211-54/+29
| | | | | | | | | | | | 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
* change execute to runTerry Howe2013-11-161-5/+19
| | | | Change-Id: I23a210c8771c206df14d2713a2e72ccd92402c43
* Add options to support TLS certificate verificationDean Troyer2013-10-071-2/+27
| | | | | | | | | | 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
* Delay authentication to handle commands that do not require itDean Troyer2013-09-121-11/+17
| | | | | | | | | | * 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
* Object API commands using our REST API layerDean Troyer2013-08-281-2/+13
| | | | | | | | | | | | | * 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
* Create a new base REST API interfaceDean Troyer2013-08-231-0/+5
| | | | | | | | | | | * 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
* Change version reporting to use pbr0.2.0Dean Troyer2013-08-021-2/+2
| | | | | | Gets rid of the hard-coded version string in shell.py Change-Id: I8b818c9a8f1224669079141e7a7caf614e588d20
* Merge "Prep for 0.2 release (0.2.rc1)"0.2.rc1Jenkins2013-08-011-1/+1
|\
| * Prep for 0.2 release (0.2.rc1)Dean Troyer2013-08-011-1/+1
| | | | | | | | | | | | | | | | * 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
* | Remove tenant round 1 - global optionsDean Troyer2013-07-311-9/+25
|/ | | | | | | | | 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
* Merge "Complete Image v1"Jenkins2013-07-201-2/+2
|\
| * Complete Image v1Dean Troyer2013-07-181-2/+2
| | | | | | | | | | | | | | | | | | * 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
* | Add show limits commandDean Troyer2013-07-121-0/+4
|/ | | | | | | | | | | | | * 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
* Finish up v3 role commandsSteve Martinelli2013-07-031-1/+14
| | | | | | | | | | | | * 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
* Migrate to flake8.Monty Taylor2013-05-161-2/+2
| | | | | | Fixes bug 1172444 Change-Id: Ieca721663aea2fd31753df4abfb5b01a7145b26a
* Fix flake8 errors in anticipation of flake8 patch.Monty Taylor2013-05-141-7/+7
| | | | Change-Id: Ifdc4322b699f2bd91a6900e55695acd3d736568e
* Merge "Add a simple extension hook"Jenkins2013-03-271-1/+13
|\
| * Add a simple extension hookDean Troyer2013-03-151-1/+13
| | | | | | | | | | | | | | | | | | | | | | 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
* | Turn down requests logging levelDean Troyer2013-03-091-0/+7
|/ | | | | | | Looks like the default is INFO, we don't need to see that unless --debug is specified. Change-Id: Ieee5d4dc5102f11536ecc6330461f86101811f9e
* Correct the version mapping to image service.Josh Kearney2013-02-191-1/+1
| | | | | | This was preventing image support from being activated. Change-Id: I1b7ab9174b90c55423b244ca63402d33b4411a49
* Add Cinder API V1 SupportSteve Martinelli2013-02-081-0/+11
| | | | | | | | | | | | | 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
* Multiple API version supportDean Troyer2013-02-061-9/+63
| | | | | | | | | | | | | | | | * 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
* Upgraded to PEP8 1.3.3 to stay aligned with Nova, etc.Josh Kearney2013-01-311-35/+37
| | | | | | | | Made all the necessary changes to pass new PEP8 standards. Also cleaned up docstrings to conform to the HACKING stanards. Change-Id: Ib8df3030da7a7885655689ab5da0717748c9edbe
* Standardize on a copyright header and ensure all files have them.Josh Kearney2013-01-241-12/+10
| | | | Change-Id: I64812bca01ca655c9cf9239a0daea84907082a29
* Keyring support for openstackclient.Bhuvan Arumugam2012-08-151-0/+44
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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