Client for OpenStack services
Find a file
Stephen Finucane 595139cee7 Fix lower-constraints job
pip 20.3 finally includes a proper dependency resolver. Its use is
causing the following error messages on the lower-constraints job:

  ERROR: Cannot install ... because these package versions have
  conflicting dependencies.

  The conflict is caused by:
      bandit 1.1.0 depends on PyYAML>=3.1.0
      cliff 3.4.0 depends on PyYAML>=3.12
      openstacksdk 0.52.0 depends on PyYAML>=3.13

Bump our lower constraint for PyYAML to resolve this issue. With that
resolved, we see a new issue:

  ERROR: Could not find a version that satisfies the requirement
  cryptography>=2.7 (from openstacksdk)
  ERROR: No matching distribution found for cryptography>=2.7

This is less self-explanatory but looking at the lower-constraints for
openstacksdk 0.52.0 shows a dependency on cryptography 2.7 [1], meaning
we need to bump this also.

Next up, flake8-import-order seems to cause the dependency resolver to
go nuts, eventually ending with the following error message in a Python
3.6 environment:

  Using cached enum34-1.1.2.zip (49 kB)
    ERROR: Command errored out with exit status 1:
     command: ...
         cwd: ...
    Complete output (9 lines):
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File ".../lib/python3.6/site-packages/setuptools/__init__.py", line 7, in <module>
        import setuptools.distutils_patch  # noqa: F401
      File ".../lib/python3.6/site-packages/setuptools/distutils_patch.py", line 9, in <module>
        import re
      File "/usr/lib64/python3.6/re.py", line 142, in <module>
        class RegexFlag(enum.IntFlag):
    AttributeError: module 'enum' has no attribute 'IntFlag'
    ----------------------------------------

A quick Google suggests this is because the enum34 package is not
complete [2]. We shouldn't even be using it since our base virtualenv
should at least use Python 3.6, but I guess some dependency doesn't
properly restrict the dependency to <= Python 3.4. This is moved from
'test-requirements.txt' to 'tox.ini' since we don't need to use our
constraints machinery for linters.

Finally, the versions of bandit and hacking that pip is bringing in both
requires in a newer version of babel, which in turn requires a new
version of pytz.

  Collecting hacking>=2.0.0
  ...
  ERROR: Cannot install oslo.i18n because these package versions have
  conflicting dependencies.
  The conflict is caused by:
      babel 2.9.0 depends on pytz>=2015.7
      babel 2.8.1 depends on pytz>=2015.7
      babel 2.8.0 depends on pytz>=2015.7
      babel 2.7.0 depends on pytz>=2015.7

Seeing as we shouldn't be tracking bandit in
lower-constraints, I'm not sure why we're want to bump these
dependencies for just that. As above, we move these dependencies out of
'test-requirements' and into 'tox.ini' since we can do that for linters.

Conflicts:
  lower-constraints.txt
  test-requirements.txt

NOTE(stephenfin): Conflicts are due to the absence of ddt and presence
of mock in lower-constraints.txt and test-requirements.txt,
respectively.

Modifications:
  lower-constraints.txt

NOTE(stephenfin): There's no need to bump cryptography here since we're
using an older version of openstacksdk.

[1] https://opendev.org/openstack/openstacksdk/src/tag/0.52.0/requirements.txt#L19
[2] https://github.com/iterative/dvc/issues/1995#issuecomment-491889669

Change-Id: I8ec738fbcabc8d8553db79a876e5592576cd18fa
Signed-off-by: Stephen Finucane <sfinucan@redhat.com>
(cherry picked from commit 20769cd7b2)
(cherry picked from commit 83cd9b5b9c)
2021-01-21 14:21:13 +00:00
doc Merge "Fix faulthy state argument choice" 2020-03-24 21:34:44 +00:00
examples Build utility image for using osc 2020-03-14 17:15:46 -05:00
openstackclient Merge "Bypass user and group verification in RemoveRole" into stable/ussuri 2020-11-11 21:21:54 +00:00
releasenotes Merge "Bypass user and group verification in RemoveRole" into stable/ussuri 2020-11-11 21:21:54 +00:00
tools Avoid tox_install.sh for constraints support 2017-12-01 10:26:50 -06:00
.coveragerc Updated coverage configuration file 2016-10-24 17:53:33 +05:30
.gitignore Updates for stestr 2017-09-15 06:32:58 +00:00
.gitreview Update .gitreview for stable/ussuri 2020-06-03 12:21:35 +00:00
.mailmap Clean up test environment and remove unused imports. 2013-01-22 11:44:18 -06:00
.stestr.conf Updates for stestr 2017-09-15 06:32:58 +00:00
.zuul.yaml Remove trailing newline from dockerhub secret 2020-03-23 12:55:11 -05:00
babel.cfg Add translation markers for user v2 actions 2014-10-09 14:47:19 -04:00
bindep.txt Fix ussuri jobs 2020-06-03 13:26:08 +02:00
CONTRIBUTING.rst Update http links in docs 2020-03-09 21:13:29 -05:00
Dockerfile Build utility image for using osc 2020-03-14 17:15:46 -05:00
HACKING.rst Replace six.iteritems() with .items() 2020-01-09 18:41:29 +09:00
LICENSE Remove LICENSE APPENDIX 2015-11-18 13:25:56 +09:00
lower-constraints.txt Fix lower-constraints job 2021-01-21 14:21:13 +00:00
README.rst Doc: launchpad => storyboard 2019-10-22 15:13:40 -05:00
requirements.txt Complete switch from glanceclient to SDK for image service 2020-03-24 13:13:06 +00:00
setup.cfg Make volume backup record commands available in v3 2020-07-07 10:59:55 +00:00
setup.py Updated from global requirements 2017-03-03 22:59:10 +00:00
test-requirements.txt Fix lower-constraints job 2021-01-21 14:21:13 +00:00
tox.ini Fix lower-constraints job 2021-01-21 14:21:13 +00:00

========================
Team and repository tags
========================

.. image:: https://governance.openstack.org/tc/badges/python-openstackclient.svg
    :target: https://governance.openstack.org/tc/reference/tags/index.html

.. Change things from this point on

===============
OpenStackClient
===============

.. image:: https://img.shields.io/pypi/v/python-openstackclient.svg
    :target: https://pypi.org/project/python-openstackclient/
    :alt: Latest Version

OpenStackClient (aka OSC) is a command-line client for OpenStack that brings
the command set for Compute, Identity, Image, Network, Object Store and Block
Storage APIs together in a single shell with a uniform command structure.

The primary goal is to provide a unified shell command structure and a common
language to describe operations in OpenStack.

* `PyPi`_ - package installation
* `Online Documentation`_
* `Storyboard project`_ - bugs and feature requests
* `Blueprints`_ - feature specifications (historical only)
* `Source`_
* `Developer`_ - getting started as a developer
* `Contributing`_ - contributing code
* `Testing`_ - testing code
* IRC: #openstack-sdks on Freenode (irc.freenode.net)
* License: Apache 2.0

.. _PyPi: https://pypi.org/project/python-openstackclient
.. _Online Documentation: https://docs.openstack.org/python-openstackclient/latest/
.. _Blueprints: https://blueprints.launchpad.net/python-openstackclient
.. _`Storyboard project`: https://storyboard.openstack.org/#!/project/openstack/python-openstackclient
.. _Source: https://opendev.org/openstack/python-openstackclient
.. _Developer: https://docs.openstack.org/project-team-guide/project-setup/python.html
.. _Contributing: https://docs.openstack.org/infra/manual/developers.html
.. _Testing: https://docs.openstack.org/python-openstackclient/latest/contributor/developing.html#testing
.. _Release Notes: https://docs.openstack.org/releasenotes/python-openstackclient

Getting Started
===============

OpenStack Client can be installed from PyPI using pip::

    pip install python-openstackclient

There are a few variants on getting help.  A list of global options and supported
commands is shown with ``--help``::

   openstack --help

There is also a ``help`` command that can be used to get help text for a specific
command::

    openstack help
    openstack help server create

If you want to make changes to the OpenStackClient for testing and contribution,
make any changes and then run::

    python setup.py develop

or::

    pip install -e .

Configuration
=============

The CLI is configured via environment variables and command-line
options as listed in  https://docs.openstack.org/python-openstackclient/latest/cli/authentication.html.

Authentication using username/password is most commonly used::

   export OS_AUTH_URL=<url-to-openstack-identity>
   export OS_IDENTITY_API_VERSION=3
   export OS_PROJECT_NAME=<project-name>
   export OS_PROJECT_DOMAIN_NAME=<project-domain-name>
   export OS_USERNAME=<username>
   export OS_USER_DOMAIN_NAME=<user-domain-name>
   export OS_PASSWORD=<password>  # (optional)

The corresponding command-line options look very similar::

   --os-auth-url <url>
   --os-identity-api-version 3
   --os-project-name <project-name>
   --os-project-domain-name <project-domain-name>
   --os-username <username>
   --os-user-domain-name <user-domain-name>
   [--os-password <password>]

If a password is not provided above (in plaintext), you will be interactively
prompted to provide one securely.