Retire Packaging Deb project repos

This commit is part of a series to retire the Packaging Deb
project. Step 2 is to remove all content from the project
repos, replacing it with a README notification where to find
ongoing work, and how to recover the repo if needed at some
future point (as in
https://docs.openstack.org/infra/manual/drivers.html#retiring-a-project).

Change-Id: I399b3030cbd511b6512ff7583ec426e29ea4b6c9
This commit is contained in:
Tony Breeds 2017-09-12 16:03:56 -06:00
parent 52583776f3
commit 2405c0e8cc
766 changed files with 14 additions and 56517 deletions

View File

@ -1,7 +0,0 @@
[run]
branch = True
source = openstack
omit = openstack/tests/*
[report]
ignore_errors = True

54
.gitignore vendored
View File

@ -1,54 +0,0 @@
*.py[cod]
.venv
# C extensions
*.so
# Packages
.eggs
*.egg
*.egg-info
dist
build
eggs
parts
bin
var
sdist
develop-eggs
.installed.cfg
lib
lib64
# Installer logs
pip-log.txt
# Unit test / coverage reports
.coverage
cover/*
.tox
nosetests.xml
.testrepository
# Translations
*.mo
# Mr Developer
.mr.developer.cfg
.project
.pydevproject
# Complexity
output/*.html
output/*/index.html
# Sphinx
doc/build
# pbr generates these
AUTHORS
ChangeLog
# Editors
*~
.*.swp

View File

@ -1,4 +0,0 @@
[gerrit]
host=review.openstack.org
port=29418
project=openstack/python-openstacksdk.git

View File

@ -1,3 +0,0 @@
# Format is:
# <preferred e-mail> <other e-mail 1>
# <preferred e-mail> <other e-mail 2>

View File

@ -1,8 +0,0 @@
[DEFAULT]
test_command=OS_STDOUT_CAPTURE=${OS_STDOUT_CAPTURE:-1} \
OS_STDERR_CAPTURE=${OS_STDERR_CAPTURE:-1} \
OS_TEST_TIMEOUT=${OS_TEST_TIMEOUT:-60} \
${PYTHON:-python} -m subunit.run discover -t ./ ${OS_TEST_PATH:-./openstack/tests/unit} $LISTOPT $IDOPTION
test_id_option=--load-list $IDFILE
test_list_option=--list
group_regex=([^\.]+\.)+

View File

@ -1,16 +0,0 @@
If you would like to contribute to the development of OpenStack,
you must follow the steps in this page:
http://docs.openstack.org/infra/manual/developers.html
Once those steps have been completed, changes to OpenStack
should be submitted for review via the Gerrit tool, following
the workflow documented at:
http://docs.openstack.org/infra/manual/developers.html#development-workflow
Pull requests submitted through GitHub will be ignored.
Bugs should be filed on Launchpad, not GitHub:
https://bugs.launchpad.net/python-openstacksdk

View File

@ -1,4 +0,0 @@
python-openstacksdk Style Commandments
======================================
Read the OpenStack Style Commandments https://docs.openstack.org/hacking/latest/

175
LICENSE
View File

@ -1,175 +0,0 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.

View File

@ -1,6 +0,0 @@
include AUTHORS
include ChangeLog
exclude .gitignore
exclude .gitreview
global-exclude *.pyc

14
README Normal file
View File

@ -0,0 +1,14 @@
This project is no longer maintained.
The contents of this repository are still available in the Git
source code management system. To see the contents of this
repository before it reached its end of life, please check out the
previous commit with "git checkout HEAD^1".
For ongoing work on maintaining OpenStack packages in the Debian
distribution, please see the Debian OpenStack packaging team at
https://wiki.debian.org/OpenStack/.
For any further questions, please email
openstack-dev@lists.openstack.org or join #openstack-dev on
Freenode.

View File

@ -1,36 +0,0 @@
OpenStack Python SDK
====================
The ``python-openstacksdk`` is a collection of libraries for building
applications to work with OpenStack clouds. The project aims to provide
a consistent and complete set of interactions with OpenStack's many
services, along with complete documentation, examples, and tools.
This SDK is under active development, and in the interests of providing
a high-quality interface, the APIs provided in this release may differ
from those provided in future release.
Usage
-----
The following example simply connects to an OpenStack cloud and lists
the containers in the Object Store service.::
from openstack import connection
conn = connection.Connection(auth_url="http://openstack:5000/v3",
project_name="big_project",
username="SDK_user",
password="Super5ecretPassw0rd")
for container in conn.object_store.containers():
print(container.name)
Documentation
-------------
Documentation is available at
http://developer.openstack.org/sdks/python/openstacksdk/
License
-------
Apache 2.0

View File

@ -1 +0,0 @@
[python: **.py]

View File

@ -1,31 +0,0 @@
#!/bin/bash
#
# NOTE(thowe): There are some issues with OCC envvars that force us to do
# this for now.
#
mkdir -p ~/.config/openstack/
FILE=~/.config/openstack/clouds.yaml
export OS_IDENTITY_API_VERSION=3 # force v3 identity
echo 'clouds:' >$FILE
echo ' test_cloud:' >>$FILE
env | grep OS_ | tr '=' ' ' | while read k v
do
k=$(echo $k | sed -e 's/OS_//')
k=$(echo $k | tr '[A-Z]' '[a-z]')
case "$k" in
region_name|*_api_version)
echo " $k: $v" >>$FILE
esac
done
echo " auth:" >>$FILE
env | grep OS_ | tr '=' ' ' | while read k v
do
k=$(echo $k | sed -e 's/OS_//')
k=$(echo $k | tr '[A-Z]' '[a-z]')
case "$k" in
region_name|*_api_version)
;;
*)
echo " $k: $v" >>$FILE
esac
done

View File

@ -1,136 +0,0 @@
# Makefile for Sphinx documentation
#
# You can set these variables from the command line.
SPHINXOPTS =
SPHINXBUILD = sphinx-build
PAPER =
BUILDDIR = build
# Internal variables.
PAPEROPT_a4 = -D latex_paper_size=a4
PAPEROPT_letter = -D latex_paper_size=letter
ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source
.PHONY: help clean html pdf dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest
help:
@echo "Please use \`make <target>' where <target> is one of"
@echo " html to make standalone HTML files"
@echo " pdf to make pdf with rst2pdf"
@echo " dirhtml to make HTML files named index.html in directories"
@echo " singlehtml to make a single large HTML file"
@echo " pickle to make pickle files"
@echo " json to make JSON files"
@echo " htmlhelp to make HTML files and a HTML help project"
@echo " qthelp to make HTML files and a qthelp project"
@echo " devhelp to make HTML files and a Devhelp project"
@echo " epub to make an epub"
@echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
@echo " latexpdf to make LaTeX files and run them through pdflatex"
@echo " text to make text files"
@echo " man to make manual pages"
@echo " changes to make an overview of all changed/added/deprecated items"
@echo " linkcheck to check all external links for integrity"
@echo " doctest to run all doctests embedded in the documentation (if enabled)"
clean:
-rm -rf $(BUILDDIR)/*
html:
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
pdf:
$(SPHINXBUILD) -b pdf $(ALLSPHINXOPTS) $(BUILDDIR)/pdf
@echo
@echo "Build finished. The PDFs are in $(BUILDDIR)/pdf."
dirhtml:
$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
singlehtml:
$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
@echo
@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
pickle:
$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
@echo
@echo "Build finished; now you can process the pickle files."
json:
$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
@echo
@echo "Build finished; now you can process the JSON files."
htmlhelp:
$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
@echo
@echo "Build finished; now you can run HTML Help Workshop with the" \
".hhp project file in $(BUILDDIR)/htmlhelp."
qthelp:
$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
@echo
@echo "Build finished; now you can run "qcollectiongenerator" with the" \
".qhcp project file in $(BUILDDIR)/qthelp, like this:"
@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/NebulaDocs.qhcp"
@echo "To view the help file:"
@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/NebulaDocs.qhc"
devhelp:
$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
@echo
@echo "Build finished."
@echo "To view the help file:"
@echo "# mkdir -p $$HOME/.local/share/devhelp/NebulaDocs"
@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/NebulaDocs"
@echo "# devhelp"
epub:
$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
@echo
@echo "Build finished. The epub file is in $(BUILDDIR)/epub."
latex:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo
@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
@echo "Run \`make' in that directory to run these through (pdf)latex" \
"(use \`make latexpdf' here to do that automatically)."
latexpdf:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo "Running LaTeX files through pdflatex..."
make -C $(BUILDDIR)/latex all-pdf
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
text:
$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
@echo
@echo "Build finished. The text files are in $(BUILDDIR)/text."
man:
$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
@echo
@echo "Build finished. The manual pages are in $(BUILDDIR)/man."
changes:
$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
@echo
@echo "The overview file is in $(BUILDDIR)/changes."
linkcheck:
$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
@echo
@echo "Link check complete; look for any errors in the above output " \
"or in $(BUILDDIR)/linkcheck/output.txt."
doctest:
$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
@echo "Testing of doctests in the sources finished, look at the " \
"results in $(BUILDDIR)/doctest/output.txt."

View File

@ -1,132 +0,0 @@
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
# implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import os
import sys
import warnings
import openstackdocstheme
sys.path.insert(0, os.path.abspath('../..'))
sys.path.insert(0, os.path.abspath('.'))
# -- General configuration ----------------------------------------------------
# Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
extensions = [
'sphinx.ext.autodoc',
'sphinx.ext.intersphinx',
'enforcer'
]
# When True, this will raise an exception that kills sphinx-build.
enforcer_warnings_as_errors = True
# autodoc generation is a bit aggressive and a nuisance when doing heavy
# text edit cycles.
# execute "export SPHINX_DEBUG=1" in your terminal to disable
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
# The suffix of source filenames.
source_suffix = '.rst'
# The master toctree document.
master_doc = 'index'
# General information about the project.
project = u'python-openstacksdk'
copyright = u'2015, OpenStack Foundation'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# "version" and "release" are used by the "log-a-bug" feature
#
# The short X.Y version.
version = '1.0'
# The full version, including alpha/beta/rc tags.
release = '1.0'
# A few variables have to be set for the log-a-bug feature.
# giturl: The location of conf.py on Git. Must be set manually.
# gitsha: The SHA checksum of the bug description. Extracted from git log.
# bug_tag: Tag for categorizing the bug. Must be set manually.
# bug_project: Launchpad project to file bugs against.
# These variables are passed to the logabug code via html_context.
giturl = u'http://git.openstack.org/cgit/openstack/python-openstacksdk/tree/doc/source'
git_cmd = "/usr/bin/git log | head -n1 | cut -f2 -d' '"
try:
gitsha = os.popen(git_cmd).read().strip('\n')
except Exception:
warnings.warn("Can not get git sha.")
gitsha = "unknown"
bug_tag = "docs"
# source tree
pwd = os.getcwd()
# html_context allows us to pass arbitrary values into the html template
html_context = {"pwd": pwd,
"gitsha": gitsha,
"bug_tag": bug_tag,
"giturl": giturl,
"bug_project": "python-openstacksdk"}
# If true, '()' will be appended to :func: etc. cross-reference text.
add_function_parentheses = True
# If true, the current module name will be prepended to all description
# unit titles (such as .. function::).
add_module_names = True
# The name of the Pygments (syntax highlighting) style to use.
pygments_style = 'sphinx'
autodoc_member_order = "bysource"
# Locations to exclude when looking for source files.
exclude_patterns = []
# -- Options for HTML output ----------------------------------------------
# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
html_theme = 'openstackdocs'
# Add any paths that contain custom themes here, relative to this directory.
html_theme_path = [openstackdocstheme.get_html_theme_path()]
# Don't let openstackdocstheme insert TOCs automatically.
theme_include_auto_toc = False
# Output file base name for HTML help builder.
htmlhelp_basename = '%sdoc' % project
# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title, author, documentclass
# [howto/manual]).
latex_documents = [
('index',
'%s.tex' % project,
u'%s Documentation' % project,
u'OpenStack Foundation', 'manual'),
]
# Example configuration for intersphinx: refer to the Python standard library.
intersphinx_mapping = {'https://docs.python.org/3/': None,
'http://docs.python-requests.org/en/master/': None}
# Include both the class and __init__ docstrings when describing the class
autoclass_content = "both"

View File

@ -1,19 +0,0 @@
clouds:
test_cloud:
region_name: RegionOne
auth:
auth_url: http://xxx.xxx.xxx.xxx:5000/v2.0/
username: demo
password: secrete
project_name: demo
example:
image_name: fedora-20.x86_64
flavor_name: m1.small
network_name: private
rackspace:
cloud: rackspace
auth:
username: joe
password: joes-password
project_name: 123123
region_name: IAD

View File

@ -1,29 +0,0 @@
# Apache 2 header omitted for brevity
from openstack.fake import fake_service
from openstack import resource
class Fake(resource.Resource):
resource_key = "resource"
resources_key = "resources"
base_path = "/fake"
service = fake_service.FakeService()
id_attribute = "name"
allow_create = True
allow_retrieve = True
allow_update = True
allow_delete = True
allow_list = True
allow_head = True
#: The transaction date and time.
timestamp = resource.prop("x-timestamp")
#: The name of this resource.
name = resource.prop("name")
#: The value of the resource. Also available in headers.
value = resource.prop("value", alias="x-resource-value")
#: Is this resource cool? If so, set it to True.
#: This is a multi-line comment about cool stuff.
cool = resource.prop("cool", type=bool)

View File

@ -1,13 +0,0 @@
# Apache 2 header omitted for brevity
from openstack import service_filter
class FakeService(service_filter.ServiceFilter):
"""The fake service."""
valid_versions = [service_filter.ValidVersion('v2')]
def __init__(self, version=None):
"""Create a fake service."""
super(FakeService, self).__init__(service_type='fake', version=version)

View File

@ -1,191 +0,0 @@
Creating a New Resource
=======================
This guide will walk you through how to add resources for a service.
Naming Conventions
------------------
Above all, names across this project conform to Python's naming standards,
as laid out in `PEP 8 <https://www.python.org/dev/peps/pep-0008/>`_.
The relevant details we need to know are as follows:
* Module names are lower case, and separated by underscores if more than
one word. For example, ``openstack.object_store``
* Class names are capitalized, with no spacing, and each subsequent word is
capitalized in a name. For example, ``ServerMetadata``.
* Attributes on classes, including methods, are lower case and separated
by underscores. For example, ``allow_list`` or ``get_data``.
Services
********
Services in the OpenStack SDK are named after their program name, not their
code name. For example, the project often known as "Nova" is always called
"compute" within this SDK.
This guide walks through creating service for an OpenStack program called
"Fake". Following our guidelines, the code for its service would
live under the ``openstack.fake`` namespace. What follows is the creation
of a :class:`~openstack.resource.Resource` class for the "Fake" service.
Resources
*********
Resources are named after the server-side resource, which is set in the
``base_path`` attribute of the resource class. This guide creates a
resouce class for the ``/fake`` server resource, so the resource module
is called ``fake.py`` and the class is called ``Fake``.
An Example
----------
``openstack/fake/fake_service.py``
.. literalinclude:: examples/resource/fake_service.py
:language: Python
:linenos:
``openstack/fake/v2/fake.py``
.. literalinclude:: examples/resource/fake.py
:language: Python
:linenos:
``fake.Fake`` Attributes
------------------------
Each service's resources inherit from :class:`~openstack.resource.Resource`,
so they can override any of the base attributes to fit the way their
particular resource operates.
``resource_key`` and ``resources_key``
**************************************
These attributes are set based on how your resource responds with data.
The default values for each of these are ``None``, which works fine
when your resource returns a JSON body that can be used directly without a
top-level key, such as ``{"name": "Ernie Banks", ...}"``.
However, our ``Fake`` resource returns JSON bodies that have the details of
the resource one level deeper, such as
``{"resources": {"name": "Ernie Banks", ...}, {...}}``. It does a similar
thing with single resources, putting them inside a dictionary keyed on
``"resource"``.
By setting ``Fake.resource_key`` on *line 8*, we tell the ``Resource.create``,
``Resource.get``, and ``Resource.update`` methods that we're either sending
or receiving a resource that is in a dictionary with that key.
By setting ``Fake.resources_key`` on *line 9*, we tell the ``Resource.list``
method that we're expecting to receive multiple resources inside a dictionary
with that key.
``base_path``
*************
The ``base_path`` is the URL we're going to use to make requests for this
resource. In this case, *line 10* sets ``base_path = "/fake"``, which also
corresponds to the name of our class, ``Fake``.
Most resources follow this basic formula. Some cases are more complex, where
the URL to make requests to has to contain some extra data. The volume service
has several resources which make either basic requests or detailed requests,
so they use ``base_path = "/volumes/%s(detailed)"``. Before a request is made,
if ``detailed = True``, they convert it to a string so the URL becomes
``/volumes/detailed``. If it's ``False``, they only send ``/volumes/``.
``service``
***********
*Line 11* is an instance of the service we're implementing. Each resource
ties itself to the service through this setting, so that the proper URL
can be constructed.
In ``fake_service.py``, we specify the valid versions as well as what this
service is called in the service catalog. When a request is made for this
resource, the Session now knows how to construct the appropriate URL using
this ``FakeService`` instance.
``id_attribute``
****************
*Line 12* specifies that this resource uses a different identifier than
the default of ``id``. While IDs are used internally, such as for creating
request URLs to interact with an individual resource, they are exposed for
consistency so users always have one place to find the resource's identity.
Supported Operations
--------------------
The base :class:`~openstack.resource.Resource` disallows all types of requests
by default, requiring each resource to specify which requests they support.
On *lines 14-19*, our ``Fake`` resource specifies that it'll work with all
of the operations.
In order to have the following methods work, you must allow the corresponding
value by setting it to ``True``:
+----------------------------------------------+----------------+
| :class:`~openstack.resource.Resource.create` | allow_create |
+----------------------------------------------+----------------+
| :class:`~openstack.resource.Resource.delete` | allow_delete |
+----------------------------------------------+----------------+
| :class:`~openstack.resource.Resource.head` | allow_head |
+----------------------------------------------+----------------+
| :class:`~openstack.resource.Resource.list` | allow_list |
+----------------------------------------------+----------------+
| :class:`~openstack.resource.Resource.get` | allow_retrieve |
+----------------------------------------------+----------------+
| :class:`~openstack.resource.Resource.update` | allow_update |
+----------------------------------------------+----------------+
An additional attribute to set is ``put_update`` if your service uses ``PUT``
requests in order to update a resource. By default, ``PATCH`` requests are
used for ``Resource.update``.
Properties
----------
The way resource classes communicate values between the user and the server
are :class:`~openstack.resource.prop` objects. These act similarly to Python's
built-in property objects, but they share only the name - they're not the same.
Properties are set based on the contents of a response body or headers.
Based on what your resource returns, you should set ``prop``\s to map
those those values to ones on your :class:`~openstack.resource.Resource`
object.
*Line 22* sets a prop for ``timestamp`` , which will cause the
``Fake.timestamp`` attribute to contain the value returned in an
``X-Timestamp`` header, such as from a ``Fake.head`` request.
*Line 24* sets a prop for ``name``, which is a value returned in a body, such
as from a ``Fake.get`` request. Note from *line 12* that ``name`` is
specified its ``id`` attribute, so when this resource
is populated from a response, ``Fake.name`` and ``Fake.id`` are the same
value.
*Line 26* sets a prop which contains an alias. ``Fake.value`` will be set
when a response body contains a ``value``, or when a header contains
``X-Resource-Value``.
*Line 28* specifies a type to be checked before sending the value in a request.
In this case, we can only set ``Fake.cool`` to either ``True`` or ``False``,
otherwise a TypeError will be raised if the value can't be converted to the
expected type.
Documentation
-------------
We use Sphinx's ``autodoc`` feature in order to build API documentation for
each resource we expose. The attributes we override from
:class:`~openstack.resource.Resource` don't need to be documented, but any
:class:`~openstack.resource.prop` attributes must be. All you need to do is
add a comment *above* the line to document, with a colon following the
pound-sign.
*Lines 21, 23, 25, and 27-28* are comments which will then appear in the API
documentation. As shown in *lines 27 & 28*, these comments can span multiple
lines.

View File

@ -1,87 +0,0 @@
Contributing to the OpenStack SDK
=================================
This section of documentation pertains to those who wish to contribute to the
development of this SDK. If you're looking for documentation on how to use
the SDK to build applications, please see the `user <../users>`_ section.
About the Project
-----------------
The OpenStack SDK is a OpenStack project aimed at providing a complete
software development kit for the programs which make up the OpenStack
community. It is a set of Python-based libraries, documentation, examples,
and tools released under the Apache 2 license.
Contacting the Developers
-------------------------
IRC
***
The developers of this project are available in the
`#openstack-sdks <http://webchat.freenode.net?channels=%23openstack-sdks>`_
channel on Freenode. This channel includes conversation on SDKs and tools
within the general OpenStack community, including OpenStackClient as well
as occasional talk about SDKs created for languages outside of Python.
Email
*****
The `openstack-dev <mailto:openstack-dev@openstack.org?subject=[python-openstacksdk]%20Question%20about%20the%20python-openstacksdk>`_
mailing list fields questions of all types on OpenStack. Using the
``[python-openstacksdk]`` filter to begin your email subject will ensure
that the message gets to SDK developers.
Development Environment
-----------------------
The first step towards contributing code and documentation is to setup your
development environment. We use a pretty standard setup, but it is fully
documented in our :doc:`setup <setup>` section.
.. toctree::
:maxdepth: 2
setup
Testing
-------
The project contains three test packages, one for unit tests, one for
functional tests and one for examples tests. The ``openstack.tests.unit``
package tests the SDK's features in isolation. The ``openstack.tests.functional``
and ``openstack.tests.examples`` packages test the SDK's features and examples
against an OpenStack cloud.
.. toctree::
testing
Project Layout
--------------
The project contains a top-level ``openstack`` package, which houses several
modules that form the foundation upon which each service's API is built on.
Under the ``openstack`` package are packages for each of those services,
such as ``openstack.compute``.
.. toctree::
layout
Adding Features
---------------
Does this SDK not do what you need it to do? Is it missing a service? Are you
a developer on another project who wants to add their service? You're in the
right place. Below are examples of how to add new features to the
OpenStack SDK.
.. toctree::
:maxdepth: 2
create/resource
.. TODO(briancurtin): document how to create a proxy
.. TODO(briancurtin): document how to create auth plugins

View File

@ -1,101 +0,0 @@
How the SDK is organized
========================
The following diagram shows how the project is laid out.
.. literalinclude:: layout.txt
Session
-------
The :class:`openstack.session.Session` manages an authenticator,
transport, and user profile. It exposes methods corresponding to
HTTP verbs, and injects your authentication token into a request,
determines any service preferences callers may have set, gets the endpoint
from the authenticator, and sends the request out through the transport.
Resource
--------
The :class:`openstack.resource.Resource` base class is the building block
of any service implementation. ``Resource`` objects correspond to the
resources each service's REST API works with, so the
:class:`openstack.compute.v2.server.Server` subclass maps to the compute
service's ``https://openstack:1234/v2/servers`` resource.
The base ``Resource`` contains methods to support the typical
`CRUD <http://en.wikipedia.org/wiki/Create,_read,_update_and_delete>`_
operations supported by REST APIs, and handles the construction of URLs
and calling the appropriate HTTP verb on the given ``Session``.
Values sent to or returned from the service are implemented as attributes
on the ``Resource`` subclass with type :class:`openstack.resource.prop`.
The ``prop`` is created with the exact name of what the API expects,
and can optionally include a ``type`` to be validated against on requests.
You should choose an attribute name that follows PEP-8, regardless of what
the server-side expects, as this ``prop`` becomes a mapping between the two.::
is_public = resource.prop('os-flavor-access:is_public', type=bool)
There are six additional attributes which the ``Resource`` class checks
before making requests to the REST API. ``allow_create``, ``allow_retreive``,
``allow_update``, ``allow_delete``, ``allow_head``, and ``allow_list`` are set
to ``True`` or ``False``, and are checked before making the corresponding
method call.
The ``base_path`` attribute should be set to the URL which corresponds to
this resource. Many ``base_path``\s are simple, such as ``"/servers"``.
For ``base_path``\s which are composed of non-static information, Python's
string replacement is used, e.g., ``base_path = "/servers/%(server_id)s/ips"``.
``resource_key`` and ``resources_key`` are attributes to set when a
``Resource`` returns more than one item in a response, or otherwise
requires a key to obtain the response value. For example, the ``Server``
class sets ``resource_key = "server"`` as an individual ``Server`` is
stored in a dictionary keyed with the singular noun,
and ``resource_keys = "servers"`` as multiple ``Server``\s are stored in
a dictionary keyed with the plural noun in the response.
Proxy
-----
Each service implements a ``Proxy`` class, within the
``openstack/<program_name>/vX/_proxy.py`` module. For example, the v2 compute
service's ``Proxy`` exists in ``openstack/compute/v2/_proxy.py``.
This ``Proxy`` class manages a :class:`~openstack.sessions.Session` and
provides a higher-level interface for users to work with via a
:class:`~openstack.connection.Connection` instance. Rather than requiring
users to maintain their own session and work with lower-level
:class:`~openstack.resource.Resource` objects, the ``Proxy`` interface
offers a place to make things easier for the caller.
Each ``Proxy`` class implements methods which act on the underlying
``Resource`` classes which represent the service. For example::
def list_flavors(self, **params):
return flavor.Flavor.list(self.session, **params)
This method is operating on the ``openstack.compute.v2.flavor.Flavor.list``
method. For the time being, it simply passes on the ``Session`` maintained
by the ``Proxy``, and returns what the underlying ``Resource.list`` method
does.
The implementations and method signatures of ``Proxy`` methods are currently
under construction, as we figure out the best way to implement them in a
way which will apply nicely across all of the services.
Connection
----------
The :class:`openstack.connection.Connection` class builds atop a ``Session``
object, and provides a higher level interface constructed of ``Proxy``
objects from each of the services.
The ``Connection`` class' primary purpose is to act as a high-level interface
to this SDK, managing the lower level connecton bits and exposing the
``Resource`` objects through their corresponding `Proxy`_ object.
If you've built proper ``Resource`` objects and implemented methods on the
corresponding ``Proxy`` object, the high-level interface to your service
should now be exposed.

View File

@ -1,13 +0,0 @@
openstack/
connection.py
resource.py
session.py
compute/
compute_service.py
v2/
server.py
_proxy.py
tests/
compute/
v2/
test_server.py

View File

@ -1,69 +0,0 @@
[[local|localrc]]
# Configure passwords and the Swift Hash
MYSQL_PASSWORD=DEVSTACK_PASSWORD
RABBIT_PASSWORD=DEVSTACK_PASSWORD
SERVICE_TOKEN=DEVSTACK_PASSWORD
ADMIN_PASSWORD=DEVSTACK_PASSWORD
SERVICE_PASSWORD=DEVSTACK_PASSWORD
SWIFT_HASH=DEVSTACK_PASSWORD
# Configure the stable OpenStack branches used by DevStack
# For stable branches see
# http://git.openstack.org/cgit/openstack-dev/devstack/refs/
CINDER_BRANCH=stable/OPENSTACK_VERSION
CEILOMETER_BRANCH=stable/OPENSTACK_VERSION
GLANCE_BRANCH=stable/OPENSTACK_VERSION
HEAT_BRANCH=stable/OPENSTACK_VERSION
HORIZON_BRANCH=stable/OPENSTACK_VERSION
KEYSTONE_BRANCH=stable/OPENSTACK_VERSION
NEUTRON_BRANCH=stable/OPENSTACK_VERSION
NOVA_BRANCH=stable/OPENSTACK_VERSION
SWIFT_BRANCH=stable/OPENSTACK_VERSION
ZAQAR_BRANCH=stable/OPENSTACK_VERSION
# Enable Swift
enable_service s-proxy
enable_service s-object
enable_service s-container
enable_service s-account
# Disable Nova Network and enable Neutron
disable_service n-net
enable_service q-svc
enable_service q-agt
enable_service q-dhcp
enable_service q-l3
enable_service q-meta
enable_service q-metering
# Enable Ceilometer
enable_service ceilometer-acompute
enable_service ceilometer-acentral
enable_service ceilometer-anotification
enable_service ceilometer-collector
enable_service ceilometer-alarm-evaluator
enable_service ceilometer-alarm-notifier
enable_service ceilometer-api
# Enable Zaqar
enable_plugin zaqar https://github.com/openstack/zaqar
enable_service zaqar-server
# Enable Heat
enable_service h-eng
enable_service h-api
enable_service h-api-cfn
enable_service h-api-cw
# Automatically download and register a VM image that Heat can launch
# For more information on Heat and DevStack see
# https://docs.openstack.org/heat/latest/getting_started/on_devstack.html
IMAGE_URL_SITE="http://download.fedoraproject.org"
IMAGE_URL_PATH="/pub/fedora/linux/releases/25/CloudImages/x86_64/images/"
IMAGE_URL_FILE="Fedora-Cloud-Base-25-1.3.x86_64.qcow2"
IMAGE_URLS+=","$IMAGE_URL_SITE$IMAGE_URL_PATH$IMAGE_URL_FILE
# Logging
LOGDAYS=1
LOGFILE=/opt/stack/logs/stack.sh.log
LOGDIR=/opt/stack/logs

View File

@ -1,123 +0,0 @@
Creating a Development Environment
==================================
Required Tools
--------------
Python
******
As the OpenStack SDK is developed in Python, you will need at least one
version of Python installed. It is strongly preferred that you have at least
one of version 2 and one of version 3 so that your tests are run against both.
Our continuous integration system runs against several versions, so ultimately
we will have the proper test coverage, but having multiple versions locally
results in less time spent in code review when changes unexpectedly break
other versions.
Python can be downloaded from https://www.python.org/downloads.
virtualenv
**********
In order to isolate our development environment from the system-based Python
installation, we use `virtualenv <https://virtualenv.pypa.io/en/latest/>`_.
This allows us to install all of our necessary dependencies without
interfering with anything else, and preventing others from interfering with us.
Virtualenv must be installed on your system in order to use it, and it can be
had from PyPI, via pip, as follows. Note that you may need to run this
as an administrator in some situations.::
$ apt-get install python-virtualenv # Debian based platforms
$ yum install python-virtualenv # Red Hat based platforms
$ pip install virtualenv # Mac OS X and other platforms
You can create a virtualenv in any location. A common usage is to store all
of your virtualenvs in the same place, such as under your home directory.
To create a virtualenv for the default Python, likely a version 2, run
the following::
$ virtualenv $HOME/envs/sdk
To create an environment for a different version, such as Python 3, run
the following::
$ virtualenv -p python3.4 $HOME/envs/sdk3
When you want to enable your environment so that you can develop inside of it,
you *activate* it. To activate an environment, run the /bin/activate
script inside of it, like the following::
$ source $HOME/envs/sdk3/bin/activate
(sdk3)$
Once you are activated, you will see the environment name in front of your
command prompt. In order to exit that environment, run the ``deactivate``
command.
tox
***
We use `tox <https://tox.readthedocs.org/en/latest/>`_ as our test runner,
which allows us to run the same test commands against multiple versions
of Python. Inside any of the virtualenvs you use for working on the SDK,
run the following to install ``tox`` into it.::
(sdk3)$ pip install tox
Git
***
The source of the OpenStack SDK is stored in Git. In order to work with our
source repository, you must have Git installed on your system. If your
system has a package manager, it can likely be had from there. If not,
you can find downloads or the source at http://git-scm.com.
Getting the Source Code
-----------------------
.. TODO(briancurtin): We should try and distill the following document
into the minimally necessary parts to include directly in this section.
I've talked to several people who are discouraged by that large of a
document to go through before even getting into the project they want
to work on. I don't want that to happen to us because we have the potential
to be more public facing than a lot of other projects.
.. note:: Before checking out the code, please read the OpenStack
`Developer's Guide <http://docs.openstack.org/infra/manual/developers.html>`_
for details on how to use the continuous integration and code
review systems that we use.
The canonical Git repository is hosted on openstack.org at
http://git.openstack.org/cgit/openstack/python-openstacksdk/, with a
mirror on GitHub at https://github.com/openstack/python-openstacksdk.
Because of how Git works, you can create a local clone from either of those,
or your own personal fork.::
(sdk3)$ git clone https://git.openstack.org/openstack/python-openstacksdk.git
(sdk3)$ cd python-openstacksdk
Installing Dependencies
-----------------------
In order to work with the SDK locally, such as in the interactive interpreter
or to run example scripts, you need to install the project's dependencies.::
(sdk3)$ pip install -r requirements.txt
After the downloads and installs are complete, you'll have a fully functional
environment to use the SDK in.
Building the Documentation
--------------------------
Our documentation is written in reStructured Text and is built using
Sphinx. A ``docs`` command is available in our ``tox.ini``, allowing you
to build the documentation like you'd run tests. The ``docs`` command is
not evaluated by default.::
(sdk3)$ tox -e docs
That command will cause the documentation, which lives in the ``docs`` folder,
to be built. HTML output is the most commonly referenced, which is located
in ``docs/build/html``.

View File

@ -1,131 +0,0 @@
Testing
=======
The tests are run with `tox <https://tox.readthedocs.org/en/latest/>`_ and
configured in ``tox.ini``. The test results are tracked by
`testr <https://testrepository.readthedocs.org/en/latest/>`_ and configured
in ``.testr.conf``.
Unit Tests
----------
Run
***
In order to run the entire unit test suite, simply run the ``tox`` command
inside of your source checkout. This will attempt to run every test command
listed inside of ``tox.ini``, which includes Python 2.7, 3.4, PyPy,
and a PEP 8 check. You should run the full test suite on all versions before
submitting changes for review in order to avoid unexpected failures in the
continuous integration system.::
(sdk3)$ tox
...
py34: commands succeeded
py27: commands succeeded
pypy: commands succeeded
pep8: commands succeeded
congratulations :)
During development, it may be more convenient to run a subset of the tests
to keep test time to a minimum. You can choose to run the tests only on one
version. A step further is to run only the tests you are working on.::
(sdk3)$ tox -e py34 # Run run the tests on Python 3.4
(sdk3)$ tox -e py34 TestContainer # Run only the TestContainer tests on 3.4
Functional Tests
----------------
The functional tests assume that you have a public or private OpenStack cloud
that you can run the tests against. The tests must be able to be run against
public clouds but first and foremost they must be run against OpenStack. In
practice, this means that the tests should initially be run against a stable
branch of `DevStack <https://docs.openstack.org/devstack/latest/>`_.
DevStack
********
There are many ways to run and configure DevStack. The link above will show
you how to run DevStack a number of ways. You'll need to choose a method
you're familiar with and can run in your environment. Wherever DevStack is
running, we need to make sure that python-openstacksdk contributors are
using the same configuration.
This is the ``local.conf`` file we use to configure DevStack.
.. literalinclude:: local.conf
Replace ``DEVSTACK_PASSWORD`` with a password of your choice.
Replace ``OPENSTACK_VERSION`` with a `stable branch <http://git.openstack.org/cgit/openstack-dev/devstack/refs/>`_
of OpenStack (without the ``stable/`` prefix on the branch name).
os-client-config
****************
To connect the functional tests to an OpenStack cloud we use
`os-client-config <http://git.openstack.org/cgit/openstack/os-client-config/tree/README.rst>`_.
To setup os-client-config create a ``clouds.yaml`` file in the root of your
source checkout.
This is an example of a minimal configuration for a ``clouds.yaml`` that
connects the functional tests to a DevStack instance. Note that one cloud
under ``clouds`` must be named ``test_cloud``.
.. literalinclude:: clouds.yaml
:language: yaml
Replace ``xxx.xxx.xxx.xxx`` with the IP address or FQDN of your DevStack instance.
You can also create a ``~/.config/openstack/clouds.yaml`` file for your
DevStack cloud environment using the following commands. Replace
``DEVSTACK_SOURCE`` with your DevStack source checkout.::
(sdk3)$ source DEVSTACK_SOURCE/accrc/admin/admin
(sdk3)$ ./create_yaml.sh
Run
***
Functional tests are run against both Python 2 and 3. In order to run the
entire functional test suite, run the ``tox -e functional`` and
``tox -e functional3`` command inside of your source checkout. This will
attempt to run every test command under ``/openstack/tests/functional/``
in the source tree. You should run the full functional test suite before
submitting changes for review in order to avoid unexpected failures in
the continuous integration system.::
(sdk3)$ tox -e functional
...
functional: commands succeeded
congratulations :)
(sdk3)$ tox -e functional3
...
functional3: commands succeeded
congratulations :)
Examples Tests
--------------
Similar to the functional tests, the examples tests assume that you have a
public or private OpenStack cloud that you can run the tests against. In
practice, this means that the tests should initially be run against a stable
branch of `DevStack <https://docs.openstack.org/devstack/latest/>`_.
And like the functional tests, the examples tests connect to an OpenStack cloud
using `os-client-config <http://git.openstack.org/cgit/openstack/os-client-config/tree/README.rst>`_.
See the functional tests instructions for information on setting up DevStack and
os-client-config.
Run
***
In order to run the entire examples test suite, simply run the
``tox -e examples`` command inside of your source checkout. This will
attempt to run every test command under ``/openstack/tests/examples/``
in the source tree.::
(sdk3)$ tox -e examples
...
examples: commands succeeded
congratulations :)

View File

@ -1,137 +0,0 @@
import importlib
import itertools
import os
from bs4 import BeautifulSoup
from sphinx import errors
# NOTE: We do this because I can't find any way to pass "-v"
# into sphinx-build through pbr...
DEBUG = True if os.getenv("ENFORCER_DEBUG") else False
WRITTEN_METHODS = set()
# NOTE: This is temporary! These methods currently exist on the base
# Proxy class as public methods, but they're deprecated in favor of
# subclasses actually exposing them if necessary. However, as they're
# public and purposely undocumented, they cause spurious warnings.
# Ignore these methods until they're actually removed from the API,
# and then we can take this special case out.
IGNORED_METHODS = ("wait_for_delete", "wait_for_status")
class EnforcementError(errors.SphinxError):
"""A mismatch between what exists and what's documented"""
category = "Enforcer"
def get_proxy_methods():
"""Return a set of public names on all proxies"""
names = ["openstack.bare_metal.v1._proxy",
"openstack.block_store.v2._proxy",
"openstack.cluster.v1._proxy",
"openstack.compute.v2._proxy",
"openstack.database.v1._proxy",
"openstack.identity.v2._proxy",
"openstack.identity.v3._proxy",
"openstack.image.v1._proxy",
"openstack.image.v2._proxy",
"openstack.key_manager.v1._proxy",
"openstack.message.v1._proxy",
"openstack.message.v2._proxy",
"openstack.metric.v1._proxy",
"openstack.network.v2._proxy",
"openstack.object_store.v1._proxy",
"openstack.orchestration.v1._proxy",
"openstack.telemetry.v2._proxy",
"openstack.telemetry.alarm.v2._proxy",
"openstack.workflow.v2._proxy"]
modules = (importlib.import_module(name) for name in names)
methods = set()
for module in modules:
# We're not going to use the Proxy for anything other than a `dir`
# so just pass a dummy value so we can create the instance.
instance = module.Proxy("")
# We only document public names
names = [name for name in dir(instance) if not name.startswith("_")]
# Remove the wait_for_* names temporarily.
for name in IGNORED_METHODS:
names.remove(name)
good_names = [module.__name__ + ".Proxy." + name for name in names]
methods.update(good_names)
return methods
def page_context(app, pagename, templatename, context, doctree):
"""Handle html-page-context-event
This event is emitted once the builder has the contents to create
an HTML page, but before the template is rendered. This is the point
where we'll know what documentation is going to be written, so
gather all of the method names that are about to be included
so we can check which ones were or were not processed earlier
by autodoc.
"""
if "users/proxies" in pagename:
soup = BeautifulSoup(context["body"], "html.parser")
dts = soup.find_all("dt")
ids = [dt.get("id") for dt in dts]
written = 0
for id in ids:
if id is not None and "_proxy.Proxy" in id:
WRITTEN_METHODS.add(id)
written += 1
if DEBUG:
app.info("ENFORCER: Wrote %d proxy methods for %s" % (
written, pagename))
def build_finished(app, exception):
"""Handle build-finished event
This event is emitted once the builder has written all of the output.
At this point we just compare what we know was written to what we know
exists within the modules and share the results.
When enforcer_warnings_as_errors=True in conf.py, this method
will raise EnforcementError on any failures in order to signal failure.
"""
all_methods = get_proxy_methods()
app.info("ENFORCER: %d proxy methods exist" % len(all_methods))
app.info("ENFORCER: %d proxy methods written" % len(WRITTEN_METHODS))
missing = all_methods - WRITTEN_METHODS
def is_ignored(name):
for ignored_name in IGNORED_METHODS:
if ignored_name in name:
return True
return False
# TEMPORARY: Ignore the wait_for names when determining what is missing.
app.info("ENFORCER: Ignoring wait_for_* names...")
missing = set(itertools.ifilterfalse(is_ignored, missing))
missing_count = len(missing)
app.info("ENFORCER: Found %d missing proxy methods "
"in the output" % missing_count)
for name in sorted(missing):
app.warn("ENFORCER: %s was not included in the output" % name)
if app.config.enforcer_warnings_as_errors and missing_count > 0:
raise EnforcementError(
"There are %d undocumented proxy methods" % missing_count)
def setup(app):
app.add_config_value("enforcer_warnings_as_errors", False, "env")
app.connect("html-page-context", page_context)
app.connect("build-finished", build_finished)

View File

@ -1,104 +0,0 @@
:orphan:
Glossary
========
.. glossary::
:sorted:
CLI
Command-Line Interface; a textual user interface.
compute
OpenStack Compute (Nova).
container
One of the :term:`object-store` resources; a container holds
:term:`objects <object>` being stored.
endpoint
A base URL used in a REST request. An `authentication endpoint` is
specifically the URL given to a user to identify a cloud. A service
endpoint is generally obtained from the service catalog.
host
A physical computer. Contrast with :term:`node` and :term:`server`.
identity
OpenStack Identity (Keystone).
image
OpenStack Image (Glance). Also the attribute name of the disk files
stored for use by servers.
keypair
The attribute name of the SSH public key used in the OpenStack Compute
API for server authentication.
node
A logical system, may refer to a :term:`server` (virtual machine) or a
:term:`host`.
Generally used to describe an OS instance where a specific process is
running, e.g. a 'network node' is where the network processes run,
and may be directly on a host or in a server. Contrast with
:term:`host` and :term:`server`.
object
A generic term which normally refers to the a Python ``object``.
The OpenStack Object Store service (Swift) also uses `object` as the
name of the item being stored within a :term:`container`.
object-store
OpenStack Object Store (Swift).
project
The name of the owner of resources in an OpenStack cloud. A `project`
can map to a customer, account or organization in different OpenStack
deployments. Used instead of the deprecated :term:`tenant`.
region
The attribute name of a partitioning of cloud resources.
resource
A Python object representing an OpenStack resource inside the SDK code.
Also used to describe the items managed by OpenStack.
role
A personality that a user assumes when performing a specific set of
operations. A `role` includes a set of rights and privileges that a
user assuming that role inherits. The OpenStack Identity service
includes the set of roles that a user can assume in the
:term:`token` that is issued to that user.
The individual services determine how the roles are interpreted
and access granted to operations or resources. The OpenStack Identity
service treats a role as an arbitrary name assigned by the cloud
administrator.
server
A virtual machine or a bare-metal host managed by the OpenStack Compute
service. Contrast with :term:`host` and :term:`node`.
service
In OpenStack this refers to a service/endpoint in the
:term:`ServiceCatalog <service catalog>`.
It could also be a collection of endpoints for different
:term:`regions <region>`.
A service has a type and a name.
service catalog
The list of :term:`services <service>` configured at a given
authentication endpoint available to the authenticated user.
tenant
Deprecated in favor of :term:`project`.
token
An arbitrary bit of text that is used to access resources. Some tokens
are `scoped` to determine what resources are accessible with it. A
token may be revoked at any time and is valid for a finite duration.
volume
OpenStack Volume (Cinder). Also the attribute name of the virtual
disks managed by the OpenStack Volume service.

View File

@ -1 +0,0 @@
.. include:: ../../ChangeLog

View File

@ -1,34 +0,0 @@
Welcome to the OpenStack SDK!
=============================
This documentation is split into two sections: one for
:doc:`users <users/index>` looking to build applications which make use of
OpenStack, and another for those looking to
:doc:`contribute <contributors/index>` to this project.
For Users
---------
.. toctree::
:maxdepth: 2
users/index
For Contributors
----------------
.. toctree::
:maxdepth: 2
contributors/index
General Information
-------------------
General information about the SDK including a glossary and release history.
.. toctree::
:maxdepth: 1
Glossary of Terms <glossary>
Release History <history>

View File

@ -1,13 +0,0 @@
Connection
==========
.. automodule:: openstack.connection
from_config
-----------
.. autofunction:: openstack.connection.from_config
Connection Object
-----------------
.. autoclass:: openstack.connection.Connection
:members:

View File

@ -1 +0,0 @@
../../../examples/

View File

@ -1,9 +0,0 @@
Using OpenStack Bare Metal
===========================
Before working with the Bare Metal service, you'll need to create a
connection to your OpenStack cloud by following the :doc:`connect` user
guide. This will provide you with the ``conn`` variable used in the examples
below.
.. TODO(Qiming): Implement this guide

View File

@ -1,9 +0,0 @@
Using OpenStack Block Store
===========================
Before working with the Block Store service, you'll need to create a
connection to your OpenStack cloud by following the :doc:`connect` user
guide. This will provide you with the ``conn`` variable used in the examples
below.
.. TODO(thowe): Implement this guide

View File

@ -1,36 +0,0 @@
..
Licensed under the Apache License, Version 2.0 (the "License"); you may
not use this file except in compliance with the License. You may obtain
a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
License for the specific language governing permissions and limitations
under the License.
=======================
Using OpenStack Cluster
=======================
Before working with the Cluster service, you'll need to create a connection
to your OpenStack cloud by following the :doc:`connect` user guide. This will
provide you with the ``conn`` variable used by all examples in this guide.
The primary abstractions/resources of the Cluster service are:
.. toctree::
:maxdepth: 1
Profile Type <cluster/profile_type>
Profile <cluster/profile>
Cluster <cluster/cluster>
Node <cluster/node>
Policy Type <cluster/policy_type>
Policy <cluster/policy>
Receiver <cluster/receiver>
Action <cluster/action>
Event <cluster/event>

View File

@ -1,18 +0,0 @@
..
Licensed under the Apache License, Version 2.0 (the "License"); you may
not use this file except in compliance with the License. You may obtain
a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
License for the specific language governing permissions and limitations
under the License.
====================
Working with Actions
====================
.. TODO(Qiming): Implement this guide

View File

@ -1,18 +0,0 @@
..
Licensed under the Apache License, Version 2.0 (the "License"); you may
not use this file except in compliance with the License. You may obtain
a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
License for the specific language governing permissions and limitations
under the License.
=================
Managing Clusters
=================
.. TODO(Qiming): Implement this guide

View File

@ -1,18 +0,0 @@
..
Licensed under the Apache License, Version 2.0 (the "License"); you may
not use this file except in compliance with the License. You may obtain
a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
License for the specific language governing permissions and limitations
under the License.
===================
Working with Events
===================
.. TODO(Qiming): Implement this guide

View File

@ -1,18 +0,0 @@
..
Licensed under the Apache License, Version 2.0 (the "License"); you may
not use this file except in compliance with the License. You may obtain
a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
License for the specific language governing permissions and limitations
under the License.
==============
Managing Nodes
==============
.. TODO(Qiming): Implement this guide

View File

@ -1,102 +0,0 @@
..
Licensed under the Apache License, Version 2.0 (the "License"); you may
not use this file except in compliance with the License. You may obtain
a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
License for the specific language governing permissions and limitations
under the License.
=================
Managing Policies
=================
A **policy type** can be treated as the meta-type of a `Policy` object. A
registry of policy types is built when the Cluster service starts. When
creating a `Policy` object, you will indicate the policy type used in its
`spec` property.
List Policies
~~~~~~~~~~~~~
To examine the list of policies:
.. literalinclude:: ../../examples/cluster/policy.py
:pyobject: list_policies
When listing policies, you can specify the sorting option using the ``sort``
parameter and you can do pagination using the ``limit`` and ``marker``
parameters.
Full example: `manage policy`_
Create Policy
~~~~~~~~~~~~~
When creating a policy, you will provide a dictionary with keys and values
according to the policy type referenced.
.. literalinclude:: ../../examples/cluster/policy.py
:pyobject: create_policy
Optionally, you can specify a ``metadata`` keyword argument that contains some
key-value pairs to be associated with the policy.
Full example: `manage policy`_
Find Policy
~~~~~~~~~~~
To find a policy based on its name or ID:
.. literalinclude:: ../../examples/cluster/policy.py
:pyobject: find_policy
Full example: `manage policy`_
Get Policy
~~~~~~~~~~
To get a policy based on its name or ID:
.. literalinclude:: ../../examples/cluster/policy.py
:pyobject: get_policy
Full example: `manage policy`_
Update Policy
~~~~~~~~~~~~~
After a policy is created, most of its properties are immutable. Still, you
can update a policy's ``name`` and/or ``metadata``.
.. literalinclude:: ../../examples/cluster/policy.py
:pyobject: update_policy
The Cluster service doesn't allow updating the ``spec`` of a policy. The only
way to achieve that is to create a new policy.
Full example: `manage policy`_
Delete Policy
~~~~~~~~~~~~~
A policy can be deleted after creation, provided that it is not referenced
by any active clusters or nodes. If you attempt to delete a policy that is
still in use, you will get an error message.
.. literalinclude:: ../../examples/cluster/policy.py
:pyobject: delete_policy
.. _manage policy: http://git.openstack.org/cgit/openstack/python-openstacksdk/tree/examples/cluster/policy.py

View File

@ -1,45 +0,0 @@
..
Licensed under the Apache License, Version 2.0 (the "License"); you may
not use this file except in compliance with the License. You may obtain
a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
License for the specific language governing permissions and limitations
under the License.
=========================
Working with Policy Types
=========================
A **policy** is a template that encodes the information needed for specifying
the rules that are checked/enforced before/after certain actions are performed
on a cluster. The rules are encoded in a property named ``spec``.
List Policy Types
~~~~~~~~~~~~~~~~~
To examine the known policy types:
.. literalinclude:: ../../examples/cluster/policy_type.py
:pyobject: list_policy_types
Full example: `manage policy type`_
Get Policy Type
~~~~~~~~~~~~~~~
To retrieve the details about a policy type, you need to provide the name of
it.
.. literalinclude:: ../../examples/cluster/policy_type.py
:pyobject: get_policy_type
Full example: `manage policy type`_
.. _manage policy type: http://git.openstack.org/cgit/openstack/python-openstacksdk/tree/examples/cluster/policy_type.py

View File

@ -1,105 +0,0 @@
..
Licensed under the Apache License, Version 2.0 (the "License"); you may
not use this file except in compliance with the License. You may obtain
a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
License for the specific language governing permissions and limitations
under the License.
=================
Managing Profiles
=================
A **profile type** can be treated as the meta-type of a `Profile` object. A
registry of profile types is built when the Cluster service starts. When
creating a `Profile` object, you will indicate the profile type used in its
`spec` property.
List Profiles
~~~~~~~~~~~~~
To examine the list of profiles:
.. literalinclude:: ../../examples/cluster/profile.py
:pyobject: list_profiles
When listing profiles, you can specify the sorting option using the ``sort``
parameter and you can do pagination using the ``limit`` and ``marker``
parameters.
Full example: `manage profile`_
Create Profile
~~~~~~~~~~~~~~
When creating a profile, you will provide a dictionary with keys and values
specified according to the profile type referenced.
.. literalinclude:: ../../examples/cluster/profile.py
:pyobject: create_profile
Optionally, you can specify a ``metadata`` keyword argument that contains some
key-value pairs to be associated with the profile.
Full example: `manage profile`_
Find Profile
~~~~~~~~~~~~
To find a profile based on its name or ID:
.. literalinclude:: ../../examples/cluster/profile.py
:pyobject: find_profile
The Cluster service doesn't allow updating the ``spec`` of a profile. The only
way to achieve that is to create a new profile.
Full example: `manage profile`_
Get Profile
~~~~~~~~~~~~
To get a profile based on its name or ID:
.. literalinclude:: ../../examples/cluster/profile.py
:pyobject: get_profile
Full example: `manage profile`_
Update Profile
~~~~~~~~~~~~~~
After a profile is created, most of its properties are immutable. Still, you
can update a profile's ``name`` and/or ``metadata``.
.. literalinclude:: ../../examples/cluster/profile.py
:pyobject: update_profile
The Cluster service doesn't allow updating the ``spec`` of a profile. The only
way to achieve that is to create a new profile.
Full example: `manage profile`_
Delete Profile
~~~~~~~~~~~~~~
A profile can be deleted after creation, provided that it is not referenced
by any active clusters or nodes. If you attempt to delete a profile that is
still in use, you will get an error message.
.. literalinclude:: ../../examples/cluster/profile.py
:pyobject: delete_profile
.. _manage profile: http://git.openstack.org/cgit/openstack/python-openstacksdk/tree/examples/cluster/profile.py

View File

@ -1,44 +0,0 @@
..
Licensed under the Apache License, Version 2.0 (the "License"); you may
not use this file except in compliance with the License. You may obtain
a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
License for the specific language governing permissions and limitations
under the License.
==========================
Working with Profile Types
==========================
A **profile** is a template used to create and manage nodes, i.e. objects
exposed by other OpenStack services. A profile encodes the information needed
for node creation in a property named ``spec``.
List Profile Types
~~~~~~~~~~~~~~~~~~
To examine the known profile types:
.. literalinclude:: ../../examples/cluster/profile_type.py
:pyobject: list_profile_types
Full example: `manage profile type`_
Get Profile Type
~~~~~~~~~~~~~~~~
To get the details about a profile type, you need to provide the name of it.
.. literalinclude:: ../../examples/cluster/profile_type.py
:pyobject: get_profile_type
Full example: `manage profile type`_
.. _manage profile type: http://git.openstack.org/cgit/openstack/python-openstacksdk/tree/examples/cluster/profile_type.py

View File

@ -1,18 +0,0 @@
..
Licensed under the Apache License, Version 2.0 (the "License"); you may
not use this file except in compliance with the License. You may obtain
a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
License for the specific language governing permissions and limitations
under the License.
==================
Managing Receivers
==================
.. TODO(Qiming): Implement this guide

View File

@ -1,89 +0,0 @@
Using OpenStack Compute
=======================
Before working with the Compute service, you'll need to create a connection
to your OpenStack cloud by following the :doc:`connect` user guide. This will
provide you with the ``conn`` variable used in the examples below.
.. contents:: Table of Contents
:local:
The primary resource of the Compute service is the server.
List Servers
------------
A **server** is a virtual machine that provides access to a compute instance
being run by your cloud provider.
.. literalinclude:: ../examples/compute/list.py
:pyobject: list_servers
Full example: `compute resource list`_
List Images
-----------
An **image** is the operating system you want to use for your server.
.. literalinclude:: ../examples/compute/list.py
:pyobject: list_images
Full example: `compute resource list`_
List Flavors
------------
A **flavor** is the resource configuration for a server. Each flavor is a
unique combination of disk, memory, vCPUs, and network bandwidth.
.. literalinclude:: ../examples/compute/list.py
:pyobject: list_flavors
Full example: `compute resource list`_
List Networks
-------------
A **network** provides connectivity to servers.
.. literalinclude:: ../examples/network/list.py
:pyobject: list_networks
Full example: `network resource list`_
Create Key Pair
---------------
A **key pair** is the public key and private key of
`publickey cryptography`_. They are used to encrypt and decrypt login
information when connecting to your server.
.. literalinclude:: ../examples/compute/create.py
:pyobject: create_keypair
Full example: `compute resource create`_
Create Server
-------------
At minimum, a server requires a name, an image, a flavor, and a network on
creation. You can discover the names and IDs of these attributes by listing
them as above and then using the find methods to get the appropriate
resources.
Ideally you'll also create a server using a keypair so you can login to that
server with the private key.
Servers take time to boot so we call ``wait_for_server`` to wait
for it to become active.
.. literalinclude:: ../examples/compute/create.py
:pyobject: create_server
Full example: `compute resource create`_
.. _compute resource list: http://git.openstack.org/cgit/openstack/python-openstacksdk/tree/examples/compute/list.py
.. _network resource list: http://git.openstack.org/cgit/openstack/python-openstacksdk/tree/examples/network/list.py
.. _compute resource create: http://git.openstack.org/cgit/openstack/python-openstacksdk/tree/examples/compute/create.py
.. _publickey cryptography: https://en.wikipedia.org/wiki/Public-key_cryptography

View File

@ -1,41 +0,0 @@
Connect
=======
In order to work with an OpenStack cloud you first need to create a
:class:`~openstack.connection.Connection` to it using your credentials. A
:class:`~openstack.connection.Connection` can be
created in 3 ways, using the class itself, a file, or environment variables.
If this is your first time using the SDK, we recommend simply using the
class itself as illustrated below.
Create Connection
-----------------
To create a connection you need a :class:`~openstack.profile.Profile` and a
:class:`~openstack.connection.Connection`.
.. literalinclude:: ../examples/connect.py
:pyobject: create_connection
The :class:`~openstack.profile.Profile` sets your preferences for each
service. You will pass it the region of the OpenStack cloud that this
connection will use.
The :class:`~openstack.connection.Connection` is a context for a connection
to an OpenStack cloud. You will primarily use it to set the
:class:`~openstack.profile.Profile` and authentication information. You can
also set the ``user_agent`` to something that describes your application
(e.g. ``my-web-app/1.3.4``).
Full example at `connect.py <http://git.openstack.org/cgit/openstack/python-openstacksdk/tree/examples/connect.py>`_
.. note:: To enable logging, see the :doc:`logging` user guide.
Next
----
Now that you can create a connection, continue with the :ref:`user_guides`
to work with an OpenStack service.
As an alternative to creating a :class:`~openstack.connection.Connection`
using the class itself, you can connect using a file or environment
variables. See the :doc:`connect_from_config` user guide.

View File

@ -1,72 +0,0 @@
Connect From Config
===================
In order to work with an OpenStack cloud you first need to create a
:class:`~openstack.connection.Connection` to it using your credentials. A
:class:`~openstack.connection.Connection` can be
created in 3 ways, using the class itself (see :doc:`connect`), a file, or
environment variables as illustrated below. The SDK uses
`os-client-config <http://git.openstack.org/cgit/openstack/os-client-config/tree/README.rst>`_
to handle the configuration.
Create Connection From A File
-----------------------------
Default Location
****************
To create a connection from a file you need a YAML file to contain the
configuration.
.. literalinclude:: ../../contributors/clouds.yaml
:language: yaml
To use a configuration file called ``clouds.yaml`` in one of the default
locations:
* Current Directory
* ~/.config/openstack
* /etc/openstack
call :py:func:`~openstack.connection.from_config`. The ``from_config``
function takes three optional arguments:
* **cloud_name** allows you to specify a cloud from your ``clouds.yaml`` file.
* **cloud_config** allows you to pass in an existing
``os_client_config.config.OpenStackConfig``` object.
* **options** allows you to specify a namespace object with options to be
added to the cloud config.
.. literalinclude:: ../examples/connect.py
:pyobject: Opts
.. literalinclude:: ../examples/connect.py
:pyobject: create_connection_from_config
.. literalinclude:: ../examples/connect.py
:pyobject: create_connection_from_args
.. note:: To enable logging, set ``debug=True`` in the ``options`` object.
User Defined Location
*********************
To use a configuration file in a user defined location set the
environment variable ``OS_CLIENT_CONFIG_FILE`` to the
absolute path of a file.::
export OS_CLIENT_CONFIG_FILE=/path/to/my/config/my-clouds.yaml
and call :py:func:`~openstack.connection.from_config` with the **cloud_name**
of the cloud configuration to use, .
.. Create Connection From Environment Variables
--------------------------------------------
TODO(etoews): Document when https://bugs.launchpad.net/os-client-config/+bug/1489617
is fixed.
Next
----
Now that you can create a connection, continue with the :ref:`user_guides`
for an OpenStack service.

View File

@ -1,8 +0,0 @@
Using OpenStack Database
========================
Before working with the Database service, you'll need to create a connection
to your OpenStack cloud by following the :doc:`connect` user guide. This will
provide you with the ``conn`` variable used in the examples below.
.. TODO(thowe): Implement this guide

View File

@ -1,111 +0,0 @@
Using OpenStack Identity
========================
Before working with the Identity service, you'll need to create a connection
to your OpenStack cloud by following the :doc:`connect` user guide. This will
provide you with the ``conn`` variable used in the examples below.
The OpenStack Identity service is the default identity management system for
OpenStack. The Identity service authentication process confirms the identity
of a user and an incoming request by validating a set of credentials that the
user supplies. Initially, these credentials are a user name and password or a
user name and API key. When the Identity service validates user credentials,
it issues an authentication token that the user provides in subsequent
requests. An authentication token is an alpha-numeric text string that enables
access to OpenStack APIs and resources. A token may be revoked at any time and
is valid for a finite duration.
List Users
----------
A **user** is a digital representation of a person, system, or service that
uses OpenStack cloud services. The Identity service validates that incoming
requests are made by the user who claims to be making the call. Users have
a login and can access resources by using assigned tokens. Users can be
directly assigned to a particular project and behave as if they are contained
in that project.
.. literalinclude:: ../examples/identity/list.py
:pyobject: list_users
Full example: `identity resource list`_
List Credentials
----------------
**Credentials** are data that confirms the identity of the user. For example,
user name and password, user name and API key, or an authentication token that
the Identity service provides.
.. literalinclude:: ../examples/identity/list.py
:pyobject: list_credentials
Full example: `identity resource list`_
List Projects
-------------
A **project** is a container that groups or isolates resources or identity
objects.
.. literalinclude:: ../examples/identity/list.py
:pyobject: list_projects
Full example: `identity resource list`_
List Domains
------------
A **domain** is an Identity service API v3 entity and represents a collection
of projects and users that defines administrative boundaries for the management
of Identity entities. Users can be granted the administrator role for a domain.
A domain administrator can create projects, users, and groups in a domain and
assign roles to users and groups in a domain.
.. literalinclude:: ../examples/identity/list.py
:pyobject: list_domains
Full example: `identity resource list`_
List Groups
-----------
A **group** is an Identity service API v3 entity and represents a collection of
users that are owned by a domain. A group role granted to a domain or project
applies to all users in the group. Adding users to, or removing users from, a
group respectively grants, or revokes, their role and authentication to the
associated domain or project.
.. literalinclude:: ../examples/identity/list.py
:pyobject: list_groups
Full example: `identity resource list`_
List Services
-------------
A **service** is an OpenStack service, such as Compute, Object Storage, or
Image service, that provides one or more endpoints through which users can
access resources and perform operations.
.. literalinclude:: ../examples/identity/list.py
:pyobject: list_services
Full example: `identity resource list`_
List Endpoints
--------------
An **endpoint** is a network-accessible address, usually a URL, through which
you can access a service.
.. literalinclude:: ../examples/identity/list.py
:pyobject: list_endpoints
Full example: `identity resource list`_
List Regions
------------
A **region** is an Identity service API v3 entity and represents a general
division in an OpenStack deployment. You can associate zero or more
sub-regions with a region to make a tree-like structured hierarchy.
.. literalinclude:: ../examples/identity/list.py
:pyobject: list_regions
Full example: `identity resource list`_
.. _identity resource list: http://git.openstack.org/cgit/openstack/python-openstacksdk/tree/examples/identity/list.py

View File

@ -1,82 +0,0 @@
Using OpenStack Image
=====================
Before working with the Image service, you'll need to create a connection
to your OpenStack cloud by following the :doc:`connect` user guide. This will
provide you with the ``conn`` variable used in the examples below.
The primary resource of the Image service is the image.
List Images
-----------
An **image** is a collection of files for a specific operating system
that you use to create or rebuild a server. OpenStack provides
`pre-built images <http://docs.openstack.org/image-guide/obtain-images.html>`_.
You can also create custom images, or snapshots, from servers that you have
launched. Images come in different formats and are sometimes called virtual
machine images.
.. literalinclude:: ../examples/image/list.py
:pyobject: list_images
Full example: `image resource list`_
Create Image
------------
Create an image by uploading its data and setting its attributes.
.. literalinclude:: ../examples/image/create.py
:pyobject: upload_image
Full example: `image resource create`_
.. _download_image-stream-true:
Downloading an Image with stream=True
-------------------------------------
As images are often very large pieces of data, storing their entire contents
in the memory of your application can be less than desirable. A more
efficient method may be to iterate over a stream of the response data.
By choosing to stream the response content, you determine the ``chunk_size``
that is appropriate for your needs, meaning only that many bytes of data are
read for each iteration of the loop until all data has been consumed.
See :meth:`requests.Response.iter_content` for more information, as well
as Requests' :ref:`body-content-workflow`.
When you choose to stream an image download, openstacksdk is no longer
able to compute the checksum of the response data for you. This example
shows how you might do that yourself, in a very similar manner to how
the library calculates checksums for non-streamed responses.
.. literalinclude:: ../examples/image/download.py
:pyobject: download_image_stream
Downloading an Image with stream=False
--------------------------------------
If you wish to download an image's contents all at once and to memory,
simply set ``stream=False``, which is the default.
.. literalinclude:: ../examples/image/download.py
:pyobject: download_image
Full example: `image resource download`_
Delete Image
------------
Delete an image.
.. literalinclude:: ../examples/image/delete.py
:pyobject: delete_image
Full example: `image resource delete`_
.. _image resource create: http://git.openstack.org/cgit/openstack/python-openstacksdk/tree/examples/image/create.py
.. _image resource delete: http://git.openstack.org/cgit/openstack/python-openstacksdk/tree/examples/image/delete.py
.. _image resource list: http://git.openstack.org/cgit/openstack/python-openstacksdk/tree/examples/image/list.py
.. _image resource download: http://git.openstack.org/cgit/openstack/python-openstacksdk/tree/examples/image/download.py

View File

@ -1,56 +0,0 @@
Using OpenStack Key Manager
===========================
Before working with the Key Manager service, you'll need to create a
connection to your OpenStack cloud by following the :doc:`connect` user
guide. This will provide you with the ``conn`` variable used in the examples
below.
.. contents:: Table of Contents
:local:
.. note:: Some interactions with the Key Manager service differ from that
of other services in that resources do not have a proper ``id`` parameter,
which is necessary to make some calls. Instead, resources have a separately
named id attribute, e.g., the Secret resource has ``secret_id``.
The examples below outline when to pass in those id values.
Create a Secret
---------------
The Key Manager service allows you to create new secrets by passing the
attributes of the :class:`~openstack.key_manager.v1.secret.Secret` to the
:meth:`~openstack.key_manager.v1._proxy.Proxy.create_secret` method.
.. literalinclude:: ../examples/key_manager/create.py
:pyobject: create_secret
List Secrets
------------
Once you have stored some secrets, they are available for you to list
via the :meth:`~openstack.key_manager.v1._proxy.Proxy.secrets` method.
This method returns a generator, which yields each
:class:`~openstack.key_manager.v1.secret.Secret`.
.. literalinclude:: ../examples/key_manager/list.py
:pyobject: list_secrets
The :meth:`~openstack.key_manager.v1._proxy.Proxy.secrets` method can
also make more advanced queries to limit the secrets that are returned.
.. literalinclude:: ../examples/key_manager/list.py
:pyobject: list_secrets_query
Get Secret Payload
------------------
Once you have received a :class:`~openstack.key_manager.v1.secret.Secret`,
you can obtain the payload for it by passing the secret's id value to
the :meth:`~openstack.key_manager.v1._proxy.Proxy.secrets` method.
Use the :data:`~openstack.key_manager.v1.secret.Secret.secret_id` attribute
when making this request.
.. literalinclude:: ../examples/key_manager/get.py
:pyobject: get_secret_payload

View File

@ -1,79 +0,0 @@
Logging
=======
Logging can save you time and effort when developing your code or looking
for help. If your code is not behaving how you expect it to, enabling and
configuring logging can quickly give you valuable insight into the root
cause of the issue. If you need help from the OpenStack community, the
logs can help the people there assist you.
.. note:: By default, no logging is done.
Enable SDK Logging
------------------
To enable logging you use :func:`~openstack.utils.enable_logging`.
The ``debug`` parameter controls the logging level. Set ``debug=True`` to
log debug and higher messages. Set ``debug=False`` to log warning and higher
messages.
To log debug and higher messages::
import sys
from openstack import utils
utils.enable_logging(debug=True, stream=sys.stdout)
The ``path`` parameter controls the location of a log file. If set, this
parameter will send log messages to a file using a :py:class:`~logging.FileHandler`.
To log messages to a file called ``openstack.log``::
from openstack import utils
utils.enable_logging(debug=True, path='openstack.log')
The ``stream`` parameter controls the stream where log message are written to.
If set to ``sys.stdout`` or ``sys.stderr``, this parameter will send log
messages to that stream using a :py:class:`~logging.StreamHandler`
To log messages to the console on ``stdout``::
import sys
from openstack import utils
utils.enable_logging(debug=True, stream=sys.stdout)
You can combine the ``path`` and ``stream`` parameters to log to both places
simultaneously.
To log messages to a file called ``openstack.log`` and the console on
``stdout``::
import sys
from openstack import utils
utils.enable_logging(debug=True, path='openstack.log', stream=sys.stdout)
Enable requests Logging
-----------------------
The SDK depends on a small number other libraries. Notably, it uses
`requests <https://pypi.python.org/pypi/requests>`_ for its transport layer.
To get even more information about the request/response cycle, you enable
logging of requests the same as you would any other library.
To log messages to the console on ``stdout``::
import logging
import sys
logger = logging.getLogger('requests')
formatter = logging.Formatter(
'%(asctime)s %(levelname)s: %(name)s %(message)s')
console = logging.StreamHandler(sys.stdout)
console.setFormatter(formatter)
logger.setLevel(logging.DEBUG)
logger.addHandler(console)

View File

@ -1,8 +0,0 @@
Using OpenStack Message
=======================
Before working with the Message service, you'll need to create a connection
to your OpenStack cloud by following the :doc:`connect` user guide. This will
provide you with the ``conn`` variable used in the examples below.
.. TODO(briancurtin): Implement this guide

View File

@ -1,140 +0,0 @@
Using OpenStack Network
=======================
Before working with the Network service, you'll need to create a connection
to your OpenStack cloud by following the :doc:`connect` user guide. This will
provide you with the ``conn`` variable used in the examples below.
.. contents:: Table of Contents
:local:
The primary resource of the Network service is the network.
List Networks
-------------
A **network** is an isolated `Layer 2 <https://en.wikipedia.org/wiki/Data_link_layer>`_
networking segment. There are two types of networks, project and provider networks.
Project networks are fully isolated and are not shared with other projects. Provider
networks map to existing physical networks in the data center and provide external
network access for servers. Only an OpenStack administrator can create provider
networks. Networks can be connected via routers.
.. literalinclude:: ../examples/network/list.py
:pyobject: list_networks
Full example: `network resource list`_
List Subnets
------------
A **subnet** is a block of IP addresses and associated configuration state.
Subnets are used to allocate IP addresses when new ports are created on a
network.
.. literalinclude:: ../examples/network/list.py
:pyobject: list_subnets
Full example: `network resource list`_
List Ports
----------
A **port** is a connection point for attaching a single device, such as the
`NIC <https://en.wikipedia.org/wiki/Network_interface_controller>`_
of a server, to a network. The port also describes the associated network
configuration, such as the `MAC <https://en.wikipedia.org/wiki/Media_access_control>`_
and IP addresses to be used on that port.
.. literalinclude:: ../examples/network/list.py
:pyobject: list_ports
Full example: `network resource list`_
List Security Groups
--------------------
A **security group** acts as a virtual firewall for servers. It is a container
for security group rules which specify the type of network traffic and direction
that is allowed to pass through a port.
.. literalinclude:: ../examples/network/list.py
:pyobject: list_security_groups
Full example: `network resource list`_
List Routers
------------
A **router** is a logical component that forwards data packets between networks.
It also provides `Layer 3 <https://en.wikipedia.org/wiki/Network_layer>`_ and
`NAT <https://en.wikipedia.org/wiki/Network_address_translation>`_ forwarding to
provide external network access for servers on project networks.
.. literalinclude:: ../examples/network/list.py
:pyobject: list_routers
Full example: `network resource list`_
List Network Agents
-------------------
A **network agent** is a plugin that handles various tasks used to
implement virtual networks. These agents include neutron-dhcp-agent,
neutron-l3-agent, neutron-metering-agent, and neutron-lbaas-agent,
among others.
.. literalinclude:: ../examples/network/list.py
:pyobject: list_network_agents
Full example: `network resource list`_
Create Network
--------------
Create a project network and subnet. This network can be used when creating
a server and allows the server to communicate with others servers on the
same project network.
.. literalinclude:: ../examples/network/create.py
:pyobject: create_network
Full example: `network resource create`_
Open a Port
-----------
When creating a security group for a network, you will need to open certain
ports to allow communication via them. For example, you may need to enable
HTTPS access on port 443.
.. literalinclude:: ../examples/network/security_group_rules.py
:pyobject: open_port
Full example: `network security group create`_
Accept Pings
------------
In order to ping a machine on your network within a security group,
you will need to create a rule to allow inbound ICMP packets.
.. literalinclude:: ../examples/network/security_group_rules.py
:pyobject: allow_ping
Full example: `network security group create`_
Delete Network
--------------
Delete a project network and its subnets.
.. literalinclude:: ../examples/network/delete.py
:pyobject: delete_network
Full example: `network resource delete`_
.. _network resource create: http://git.openstack.org/cgit/openstack/python-openstacksdk/tree/examples/network/create.py
.. _network resource delete: http://git.openstack.org/cgit/openstack/python-openstacksdk/tree/examples/network/delete.py
.. _network resource list: http://git.openstack.org/cgit/openstack/python-openstacksdk/tree/examples/network/list.py
.. _network security group create: http://git.openstack.org/cgit/openstack/python-openstacksdk/tree/examples/network/security_group_rules.py

View File

@ -1,211 +0,0 @@
Using OpenStack Object Store
============================
Before working with the Object Store service, you'll need to create a
connection to your OpenStack cloud by following the :doc:`connect` user
guide. This will provide you with the ``conn`` variable used in the examples
below.
.. contents:: Table of Contents
:local:
The primary resources of the Object Store service are containers and objects.
Working with Containers
-----------------------
Listing Containers
******************
To list existing containers, use the
:meth:`~openstack.object_store.v1._proxy.Proxy.containers` method. ::
>>> for cont in conn.object_store.containers():
... print cont
...
openstack.object_store.v1.container.Container: {u'count': 5,
u'bytes': 500, u'name': u'my container'}
openstack.object_store.v1.container.Container: {u'count': 0,
u'bytes': 0, u'name': u'empty container'}
openstack.object_store.v1.container.Container: {u'count': 100,
u'bytes': 1000000, u'name': u'another container'}
The ``containers`` method returns a generator which yields
:class:`~openstack.object_store.v1.container.Container` objects. It handles
pagination for you, which can be adjusted via the ``limit`` argument.
By default, the ``containers`` method will yield as many containers as the
service will return, and it will continue requesting until it receives
no more. ::
>>> for cont in conn.object_store.containers(limit=500):
... print(cont)
...
<500 Containers>
... another request transparently made to the Object Store service
<500 more Containers>
...
Creating Containers
*******************
To create a container, use the
:meth:`~openstack.object_store.v1._proxy.Proxy.create_container` method. ::
>>> cont = conn.object_store.create_container(name="new container")
>>> cont
openstack.object_store.v1.container.Container: {'name': u'new container'}
Working with Container Metadata
*******************************
To get the metadata for a container, use the
:meth:`~openstack.object_store.v1._proxy.Proxy.get_container_metadata` method.
This method either takes the name of a container, or a
:class:`~openstack.object_store.v1.container.Container` object, and it returns
a `Container` object with all of its metadata attributes set. ::
>>> cont = conn.object_store.get_container_metadata("new container")
openstack.object_store.v1.container.Container: {'content-length': '0',
'x-container-object-count': '0', 'name': u'new container',
'accept-ranges': 'bytes',
'x-trans-id': 'tx22c5de63466e4c05bb104-0054740c39',
'date': 'Tue, 25 Nov 2014 04:57:29 GMT',
'x-timestamp': '1416889793.23520', 'x-container-read': '.r:mysite.com',
'x-container-bytes-used': '0', 'content-type': 'text/plain; charset=utf-8'}
To set the metadata for a container, use the
:meth:`~openstack.object_store.v1._proxy.Proxy.set_container_metadata` method.
This method takes a :class:`~openstack.object_store.v1.container.Container`
object. For example, to grant another user write access to this container,
you can set the
:attr:`~openstack.object_store.v1.container.Container.write_ACL` on a
resource and pass it to `set_container_metadata`. ::
>>> cont.write_ACL = "big_project:another_user"
>>> conn.object_store.set_container_metadata(cont)
openstack.object_store.v1.container.Container: {'content-length': '0',
'x-container-object-count': '0',
'name': u'my new container', 'accept-ranges': 'bytes',
'x-trans-id': 'txc3ee751f971d41de9e9f4-0054740ec1',
'date': 'Tue, 25 Nov 2014 05:08:17 GMT',
'x-timestamp': '1416889793.23520', 'x-container-read': '.r:mysite.com',
'x-container-bytes-used': '0', 'content-type': 'text/plain; charset=utf-8',
'x-container-write': 'big_project:another_user'}
Working with Objects
--------------------
Objects are held in containers. From an API standpoint, you work with
them using similarly named methods, typically with an additional argument
to specify their container.
Listing Objects
***************
To list the objects that exist in a container, use the
:meth:`~openstack.object_store.v1._proxy.Proxy.objects` method.
If you have a :class:`~openstack.object_store.v1.container.Container`
object, you can pass it to ``objects``. ::
>>> print cont.name
pictures
>>> for obj in conn.object_store.objects(cont):
... print obj
...
openstack.object_store.v1.container.Object:
{u'hash': u'0522d4ccdf9956badcb15c4087a0c4cb',
u'name': u'pictures/selfie.jpg', u'bytes': 15744,
'last-modified': u'2014-10-31T06:33:36.618640',
u'last_modified': u'2014-10-31T06:33:36.618640',
u'content_type': u'image/jpeg', 'container': u'pictures',
'content-type': u'image/jpeg'}
...
Similar to the :meth:`~openstack.object_store.v1._proxy.Proxy.containers`
method, ``objects`` returns a generator which yields
:class:`~openstack.object_store.v1.obj.Object` objects stored in the
container. It also handles pagination for you, which you can adjust
with the ``limit`` parameter, otherwise making each request for the maximum
that your Object Store will return.
If you have the name of a container instead of an object, you can also
pass that to the ``objects`` method. ::
>>> for obj in conn.object_store.objects("pictures".decode("utf8"),
limit=100):
... print obj
...
<100 Objects>
... another request transparently made to the Object Store service
<100 more Objects>
Getting Object Data
*******************
Once you have an :class:`~openstack.object_store.v1.obj.Object`, you get
the data stored inside of it with the
:meth:`~openstack.object_store.v1._proxy.Proxy.get_object_data` method. ::
>>> print ob.name
message.txt
>>> data = conn.object_store.get_object_data(ob)
>>> print data
Hello, world!
Additionally, if you want to save the object to disk, the
:meth:`~openstack.object_store.v1._proxy.Proxy.download_object` convenience
method takes an :class:`~openstack.object_store.v1.obj.Object` and a
``path`` to write the contents to. ::
>>> conn.object_store.download_object(ob, "the_message.txt")
Uploading Objects
*****************
Once you have data you'd like to store in the Object Store service, you use
the :meth:`~openstack.object_store.v1._proxy.Proxy.upload_object` method.
This method takes the ``data`` to be stored, along with at least an object
``name`` and the ``container`` it is to be stored in. ::
>>> hello = conn.object_store.upload_object(container="messages",
name="helloworld.txt",
data="Hello, world!")
>>> print hello
openstack.object_store.v1.container.Object: {'content-length': '0',
'container': u'messages', 'name': u'helloworld.txt',
'last-modified': 'Tue, 25 Nov 2014 17:39:29 GMT',
'etag': '5eb63bbbe01eeed093cb22bb8f5acdc3',
'x-trans-id': 'tx3035d41b03334aeaaf3dd-005474bed0',
'date': 'Tue, 25 Nov 2014 17:39:28 GMT',
'content-type': 'text/html; charset=UTF-8'}
Working with Object Metadata
****************************
Working with metadata on objects is identical to how it's done with
containers. You use the
:meth:`~openstack.object_store.v1._proxy.Proxy.get_object_metadata` and
:meth:`~openstack.object_store.v1._proxy.Proxy.set_object_metadata` methods.
The metadata attributes to be set can be found on the
:class:`~openstack.object_store.v1.obj.Object` object. ::
>>> secret.delete_after = 300
>>> secret = conn.object_store.set_object_metadata(secret)
We set the :attr:`~openstack.object_store.obj.Object.delete_after`
value to 500 seconds, causing the object to be deleted in 300 seconds,
or five minutes. That attribute corresponds to the ``X-Delete-After``
header value, which you can see is returned when we retreive the updated
metadata. ::
>>> conn.object_store.get_object_metadata(ob)
openstack.object_store.v1.container.Object: {'content-length': '11',
'container': u'Secret Container',
'name': u'selfdestruct.txt', 'x-delete-after': 300,
'accept-ranges': 'bytes', 'last-modified': 'Tue, 25 Nov 2014 17:50:45 GMT',
'etag': '5eb63bbbe01eeed093cb22bb8f5acdc3',
'x-timestamp': '1416937844.36805',
'x-trans-id': 'tx5c3fd94adf7c4e1b8f334-005474c17b',
'date': 'Tue, 25 Nov 2014 17:50:51 GMT', 'content-type': 'text/plain'}

View File

@ -1,9 +0,0 @@
Using OpenStack Orchestration
=============================
Before working with the Orchestration service, you'll need to create a
connection to your OpenStack cloud by following the :doc:`connect` user
guide. This will provide you with the ``conn`` variable used in the examples
below.
.. TODO(thowe): Implement this guide

View File

@ -1,11 +0,0 @@
Using OpenStack Telemetry
=========================
.. caution::
BETA: This API is a work in progress and is subject to change.
Before working with the Telemetry service, you'll need to create a connection
to your OpenStack cloud by following the :doc:`connect` user guide. This will
provide you with the ``conn`` variable used in the examples below.
.. TODO(thowe): Implement this guide

View File

@ -1,139 +0,0 @@
Getting started with the OpenStack SDK
======================================
For a listing of terms used throughout the SDK, including the names of
projects and services supported by it, see the :doc:`glossary <../glossary>`.
Installation
------------
The OpenStack SDK is available on
`PyPI <https://pypi.python.org/pypi/openstacksdk>`_ under the name
**openstacksdk**. To install it, use ``pip``::
$ pip install openstacksdk
.. _user_guides:
User Guides
-----------
These guides walk you through how to make use of the libraries we provide
to work with each OpenStack service. If you're looking for a cookbook
approach, this is where you'll want to begin.
.. toctree::
:maxdepth: 1
Connect to an OpenStack Cloud <guides/connect>
Connect to an OpenStack Cloud Using a Config File <guides/connect_from_config>
Logging <guides/logging>
Bare Metal <guides/bare_metal>
Block Store <guides/block_store>
Cluster <guides/cluster>
Compute <guides/compute>
Database <guides/database>
Identity <guides/identity>
Image <guides/image>
Key Manager <guides/key_manager>
Message <guides/message>
Network <guides/network>
Object Store <guides/object_store>
Orchestration <guides/orchestration>
Telemetry <guides/telemetry>
API Documentation
-----------------
Service APIs are exposed through a two-layered approach. The classes
exposed through our *Connection* interface are the place to start if you're
an application developer consuming an OpenStack cloud. The *Resource*
interface is the layer upon which the *Connection* is built, with
*Connection* methods accepting and returning *Resource* objects.
Connection Interface
********************
A *Connection* instance maintains your session, authentication, transport,
and profile, providing you with a set of higher-level interfaces to work
with OpenStack services.
.. toctree::
:maxdepth: 1
connection
profile
Once you have a *Connection* instance, the following services may be exposed
to you. Your user profile determine the full set of exposed services,
but listed below are the ones provided by this SDK by default.
.. toctree::
:maxdepth: 1
Bare Metal <proxies/bare_metal>
Block Store <proxies/block_store>
Cluster <proxies/cluster>
Compute <proxies/compute>
Database <proxies/database>
Identity v2 <proxies/identity_v2>
Identity v3 <proxies/identity_v3>
Image v1 <proxies/image_v1>
Image v2 <proxies/image_v2>
Key Manager <proxies/key_manager>
Load Balancer <proxies/load_balancer_v2>
Message v1 <proxies/message_v1>
Message v2 <proxies/message_v2>
Network <proxies/network>
Metric <proxies/metric>
Object Store <proxies/object_store>
Orchestration <proxies/orchestration>
Telemetry <proxies/telemetry>
Workflow <proxies/workflow>
Resource Interface
******************
The *Resource* layer is a lower-level interface to communicate with OpenStack
services. While the classes exposed by the *Connection* build a convenience
layer on top of this, *Resources* can be used directly. However, the most
common usage of this layer is in receiving an object from a class in the
*Connection* layer, modifying it, and sending it back into the *Connection*
layer, such as to update a resource on the server.
The following services have exposed *Resource* classes.
.. toctree::
:maxdepth: 1
Bare Metal <resources/bare_metal/index>
Block Store <resources/block_store/index>
Cluster <resources/cluster/index>
Compute <resources/compute/index>
Database <resources/database/index>
Identity <resources/identity/index>
Image <resources/image/index>
Key Management <resources/key_manager/index>
Metric <resources/metric/index>
Network <resources/network/index>
Orchestration <resources/orchestration/index>
Object Store <resources/object_store/index>
Telemetry <resources/telemetry/index>
Workflow <resources/workflow/index>
Low-Level Classes
*****************
The following classes are not commonly used by application developers,
but are used to construct applications to talk to OpenStack APIs. Typically
these parts are managed through the `Connection Interface`_, but their use
can be customized.
.. toctree::
:maxdepth: 1
session
resource
resource2
service_filter
utils

View File

@ -1,9 +0,0 @@
Profile
=======
.. automodule:: openstack.profile
Profile Object
--------------
.. autoclass:: openstack.profile.Profile
:members:

View File

@ -1,76 +0,0 @@
Bare Metal API
==============
For details on how to use bare_metal, see :doc:`/users/guides/bare_metal`
.. automodule:: openstack.bare_metal.v1._proxy
The BareMetal Class
--------------------
The bare_metal high-level interface is available through the ``bare_metal``
member of a :class:`~openstack.connection.Connection` object.
The ``bare_metal`` member will only be added if the service is detected.
Node Operations
^^^^^^^^^^^^^^^
.. autoclass:: openstack.bare_metal.v1._proxy.Proxy
.. automethod:: openstack.bare_metal.v1._proxy.Proxy.create_node
.. automethod:: openstack.bare_metal.v1._proxy.Proxy.update_node
.. automethod:: openstack.bare_metal.v1._proxy.Proxy.delete_node
.. automethod:: openstack.bare_metal.v1._proxy.Proxy.get_node
.. automethod:: openstack.bare_metal.v1._proxy.Proxy.find_node
.. automethod:: openstack.bare_metal.v1._proxy.Proxy.nodes
Port Operations
^^^^^^^^^^^^^^^
.. autoclass:: openstack.bare_metal.v1._proxy.Proxy
.. automethod:: openstack.bare_metal.v1._proxy.Proxy.create_port
.. automethod:: openstack.bare_metal.v1._proxy.Proxy.update_port
.. automethod:: openstack.bare_metal.v1._proxy.Proxy.delete_port
.. automethod:: openstack.bare_metal.v1._proxy.Proxy.get_port
.. automethod:: openstack.bare_metal.v1._proxy.Proxy.find_port
.. automethod:: openstack.bare_metal.v1._proxy.Proxy.ports
Port Group Operations
^^^^^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.bare_metal.v1._proxy.Proxy
.. automethod:: openstack.bare_metal.v1._proxy.Proxy.create_port_group
.. automethod:: openstack.bare_metal.v1._proxy.Proxy.update_port_group
.. automethod:: openstack.bare_metal.v1._proxy.Proxy.delete_port_group
.. automethod:: openstack.bare_metal.v1._proxy.Proxy.get_port_group
.. automethod:: openstack.bare_metal.v1._proxy.Proxy.find_port_group
.. automethod:: openstack.bare_metal.v1._proxy.Proxy.port_groups
Driver Operations
^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.bare_metal.v1._proxy.Proxy
.. automethod:: openstack.bare_metal.v1._proxy.Proxy.drivers
.. automethod:: openstack.bare_metal.v1._proxy.Proxy.get_driver
Chassis Operations
^^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.bare_metal.v1._proxy.Proxy
.. automethod:: openstack.bare_metal.v1._proxy.Proxy.create_chassis
.. automethod:: openstack.bare_metal.v1._proxy.Proxy.update_chassis
.. automethod:: openstack.bare_metal.v1._proxy.Proxy.delete_chassis
.. automethod:: openstack.bare_metal.v1._proxy.Proxy.get_chassis
.. automethod:: openstack.bare_metal.v1._proxy.Proxy.find_chassis
.. automethod:: openstack.bare_metal.v1._proxy.Proxy.chassis
Deprecated Methods
^^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.bare_metal.v1._proxy.Proxy
.. automethod:: openstack.bare_metal.v1._proxy.Proxy.create_portgroup
.. automethod:: openstack.bare_metal.v1._proxy.Proxy.update_portgroup
.. automethod:: openstack.bare_metal.v1._proxy.Proxy.delete_portgroup
.. automethod:: openstack.bare_metal.v1._proxy.Proxy.get_portgroup
.. automethod:: openstack.bare_metal.v1._proxy.Proxy.find_portgroup
.. automethod:: openstack.bare_metal.v1._proxy.Proxy.portgroups

View File

@ -1,43 +0,0 @@
Block Store API
===============
For details on how to use block_store, see :doc:`/users/guides/block_store`
.. automodule:: openstack.block_store.v2._proxy
The BlockStore Class
--------------------
The block_store high-level interface is available through the ``block_store``
member of a :class:`~openstack.connection.Connection` object.
The ``block_store`` member will only be added if the service is detected.
Volume Operations
^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.block_store.v2._proxy.Proxy
.. automethod:: openstack.block_store.v2._proxy.Proxy.create_volume
.. automethod:: openstack.block_store.v2._proxy.Proxy.delete_volume
.. automethod:: openstack.block_store.v2._proxy.Proxy.get_volume
.. automethod:: openstack.block_store.v2._proxy.Proxy.volumes
Type Operations
^^^^^^^^^^^^^^^
.. autoclass:: openstack.block_store.v2._proxy.Proxy
.. automethod:: openstack.block_store.v2._proxy.Proxy.create_type
.. automethod:: openstack.block_store.v2._proxy.Proxy.delete_type
.. automethod:: openstack.block_store.v2._proxy.Proxy.get_type
.. automethod:: openstack.block_store.v2._proxy.Proxy.types
Snapshot Operations
^^^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.block_store.v2._proxy.Proxy
.. automethod:: openstack.block_store.v2._proxy.Proxy.create_snapshot
.. automethod:: openstack.block_store.v2._proxy.Proxy.delete_snapshot
.. automethod:: openstack.block_store.v2._proxy.Proxy.get_snapshot
.. automethod:: openstack.block_store.v2._proxy.Proxy.snapshots

View File

@ -1,177 +0,0 @@
Cluster API
===========
.. automodule:: openstack.cluster.v1._proxy
The Cluster Class
-----------------
The cluster high-level interface is available through the ``cluster``
member of a :class:`~openstack.connection.Connection` object. The
``cluster`` member will only be added if the service is detected.
Build Info Operations
^^^^^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.cluster.v1._proxy.Proxy
.. automethod:: openstack.cluster.v1._proxy.Proxy.get_build_info
Profile Type Operations
^^^^^^^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.cluster.v1._proxy.Proxy
.. automethod:: openstack.cluster.v1._proxy.Proxy.profile_types
.. automethod:: openstack.cluster.v1._proxy.Proxy.get_profile_type
Profile Operations
^^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.cluster.v1._proxy.Proxy
.. automethod:: openstack.cluster.v1._proxy.Proxy.create_profile
.. automethod:: openstack.cluster.v1._proxy.Proxy.update_profile
.. automethod:: openstack.cluster.v1._proxy.Proxy.delete_profile
.. automethod:: openstack.cluster.v1._proxy.Proxy.get_profile
.. automethod:: openstack.cluster.v1._proxy.Proxy.find_profile
.. automethod:: openstack.cluster.v1._proxy.Proxy.profiles
.. automethod:: openstack.cluster.v1._proxy.Proxy.validate_profile
Policy Type Operations
^^^^^^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.cluster.v1._proxy.Proxy
.. automethod:: openstack.cluster.v1._proxy.Proxy.policy_types
.. automethod:: openstack.cluster.v1._proxy.Proxy.get_policy_type
Policy Operations
^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.cluster.v1._proxy.Proxy
.. automethod:: openstack.cluster.v1._proxy.Proxy.create_policy
.. automethod:: openstack.cluster.v1._proxy.Proxy.update_policy
.. automethod:: openstack.cluster.v1._proxy.Proxy.delete_policy
.. automethod:: openstack.cluster.v1._proxy.Proxy.get_policy
.. automethod:: openstack.cluster.v1._proxy.Proxy.find_policy
.. automethod:: openstack.cluster.v1._proxy.Proxy.policies
.. automethod:: openstack.cluster.v1._proxy.Proxy.validate_policy
Cluster Operations
^^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.cluster.v1._proxy.Proxy
.. automethod:: openstack.cluster.v1._proxy.Proxy.create_cluster
.. automethod:: openstack.cluster.v1._proxy.Proxy.update_cluster
.. automethod:: openstack.cluster.v1._proxy.Proxy.delete_cluster
.. automethod:: openstack.cluster.v1._proxy.Proxy.get_cluster
.. automethod:: openstack.cluster.v1._proxy.Proxy.find_cluster
.. automethod:: openstack.cluster.v1._proxy.Proxy.clusters
.. automethod:: openstack.cluster.v1._proxy.Proxy.check_cluster
.. automethod:: openstack.cluster.v1._proxy.Proxy.recover_cluster
.. automethod:: openstack.cluster.v1._proxy.Proxy.resize_cluster
.. automethod:: openstack.cluster.v1._proxy.Proxy.scale_in_cluster
.. automethod:: openstack.cluster.v1._proxy.Proxy.scale_out_cluster
.. automethod:: openstack.cluster.v1._proxy.Proxy.collect_cluster_attrs
.. automethod:: openstack.cluster.v1._proxy.Proxy.perform_operation_on_cluster
.. automethod:: openstack.cluster.v1._proxy.Proxy.add_nodes_to_cluster
.. automethod:: openstack.cluster.v1._proxy.Proxy.remove_nodes_from_cluster
.. automethod:: openstack.cluster.v1._proxy.Proxy.replace_nodes_in_cluster
.. automethod:: openstack.cluster.v1._proxy.Proxy.attach_policy_to_cluster
.. automethod:: openstack.cluster.v1._proxy.Proxy.update_cluster_policy
.. automethod:: openstack.cluster.v1._proxy.Proxy.detach_policy_from_cluster
.. automethod:: openstack.cluster.v1._proxy.Proxy.get_cluster_policy
.. automethod:: openstack.cluster.v1._proxy.Proxy.cluster_policies
.. automethod:: openstack.cluster.v1._proxy.Proxy.cluster_add_nodes
.. automethod:: openstack.cluster.v1._proxy.Proxy.cluster_attach_policy
.. automethod:: openstack.cluster.v1._proxy.Proxy.cluster_del_nodes
.. automethod:: openstack.cluster.v1._proxy.Proxy.cluster_detach_policy
.. automethod:: openstack.cluster.v1._proxy.Proxy.cluster_operation
.. automethod:: openstack.cluster.v1._proxy.Proxy.cluster_replace_nodes
.. automethod:: openstack.cluster.v1._proxy.Proxy.cluster_resize
.. automethod:: openstack.cluster.v1._proxy.Proxy.cluster_scale_in
.. automethod:: openstack.cluster.v1._proxy.Proxy.cluster_scale_out
.. automethod:: openstack.cluster.v1._proxy.Proxy.cluster_update_policy
Node Operations
^^^^^^^^^^^^^^^
.. autoclass:: openstack.cluster.v1._proxy.Proxy
.. automethod:: openstack.cluster.v1._proxy.Proxy.create_node
.. automethod:: openstack.cluster.v1._proxy.Proxy.update_node
.. automethod:: openstack.cluster.v1._proxy.Proxy.delete_node
.. automethod:: openstack.cluster.v1._proxy.Proxy.get_node
.. automethod:: openstack.cluster.v1._proxy.Proxy.find_node
.. automethod:: openstack.cluster.v1._proxy.Proxy.nodes
.. automethod:: openstack.cluster.v1._proxy.Proxy.check_node
.. automethod:: openstack.cluster.v1._proxy.Proxy.recover_node
.. automethod:: openstack.cluster.v1._proxy.Proxy.perform_operation_on_node
.. automethod:: openstack.cluster.v1._proxy.Proxy.adopt_node
.. automethod:: openstack.cluster.v1._proxy.Proxy.node_operation
Receiver Operations
^^^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.cluster.v1._proxy.Proxy
.. automethod:: openstack.cluster.v1._proxy.Proxy.create_receiver
.. automethod:: openstack.cluster.v1._proxy.Proxy.update_receiver
.. automethod:: openstack.cluster.v1._proxy.Proxy.delete_receiver
.. automethod:: openstack.cluster.v1._proxy.Proxy.get_receiver
.. automethod:: openstack.cluster.v1._proxy.Proxy.find_receiver
.. automethod:: openstack.cluster.v1._proxy.Proxy.receivers
Action Operations
^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.cluster.v1._proxy.Proxy
.. automethod:: openstack.cluster.v1._proxy.Proxy.get_action
.. automethod:: openstack.cluster.v1._proxy.Proxy.actions
Event Operations
^^^^^^^^^^^^^^^^
.. autoclass:: openstack.cluster.v1._proxy.Proxy
.. automethod:: openstack.cluster.v1._proxy.Proxy.get_event
.. automethod:: openstack.cluster.v1._proxy.Proxy.events
Helper Operations
^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.cluster.v1._proxy.Proxy
.. automethod:: openstack.cluster.v1._proxy.Proxy.wait_for_delete
.. automethod:: openstack.cluster.v1._proxy.Proxy.wait_for_status
Service Operations
^^^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.cluster.v1._proxy.Proxy
.. automethod:: openstack.cluster.v1._proxy.Proxy.services

View File

@ -1,194 +0,0 @@
Compute API
===========
For details on how to use compute, see :doc:`/users/guides/compute`
.. automodule:: openstack.compute.v2._proxy
The Compute Class
-----------------
The compute high-level interface is available through the ``compute``
member of a :class:`~openstack.connection.Connection` object. The
``compute`` member will only be added if the service is detected.
Server Operations
^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.compute.v2._proxy.Proxy
.. automethod:: openstack.compute.v2._proxy.Proxy.create_server
.. automethod:: openstack.compute.v2._proxy.Proxy.update_server
.. automethod:: openstack.compute.v2._proxy.Proxy.delete_server
.. automethod:: openstack.compute.v2._proxy.Proxy.get_server
.. automethod:: openstack.compute.v2._proxy.Proxy.find_server
.. automethod:: openstack.compute.v2._proxy.Proxy.servers
.. automethod:: openstack.compute.v2._proxy.Proxy.get_server_metadata
.. automethod:: openstack.compute.v2._proxy.Proxy.set_server_metadata
.. automethod:: openstack.compute.v2._proxy.Proxy.delete_server_metadata
.. automethod:: openstack.compute.v2._proxy.Proxy.wait_for_server
.. automethod:: openstack.compute.v2._proxy.Proxy.create_server_image
.. automethod:: openstack.compute.v2._proxy.Proxy.backup_server
Network Actions
***************
.. autoclass:: openstack.compute.v2._proxy.Proxy
.. automethod:: openstack.compute.v2._proxy.Proxy.add_fixed_ip_to_server
.. automethod:: openstack.compute.v2._proxy.Proxy.remove_fixed_ip_from_server
.. automethod:: openstack.compute.v2._proxy.Proxy.add_floating_ip_to_server
.. automethod:: openstack.compute.v2._proxy.Proxy.remove_floating_ip_from_server
.. automethod:: openstack.compute.v2._proxy.Proxy.add_security_group_to_server
.. automethod:: openstack.compute.v2._proxy.Proxy.remove_security_group_from_server
Starting, Stopping, etc.
************************
.. autoclass:: openstack.compute.v2._proxy.Proxy
.. automethod:: openstack.compute.v2._proxy.Proxy.start_server
.. automethod:: openstack.compute.v2._proxy.Proxy.stop_server
.. automethod:: openstack.compute.v2._proxy.Proxy.suspend_server
.. automethod:: openstack.compute.v2._proxy.Proxy.resume_server
.. automethod:: openstack.compute.v2._proxy.Proxy.reboot_server
.. automethod:: openstack.compute.v2._proxy.Proxy.shelve_server
.. automethod:: openstack.compute.v2._proxy.Proxy.unshelve_server
.. automethod:: openstack.compute.v2._proxy.Proxy.lock_server
.. automethod:: openstack.compute.v2._proxy.Proxy.unlock_server
.. automethod:: openstack.compute.v2._proxy.Proxy.pause_server
.. automethod:: openstack.compute.v2._proxy.Proxy.unpause_server
.. automethod:: openstack.compute.v2._proxy.Proxy.rescue_server
.. automethod:: openstack.compute.v2._proxy.Proxy.unrescue_server
.. automethod:: openstack.compute.v2._proxy.Proxy.evacuate_server
.. automethod:: openstack.compute.v2._proxy.Proxy.migrate_server
.. automethod:: openstack.compute.v2._proxy.Proxy.get_server_console_output
.. automethod:: openstack.compute.v2._proxy.Proxy.live_migrate_server
Modifying a Server
******************
.. autoclass:: openstack.compute.v2._proxy.Proxy
.. automethod:: openstack.compute.v2._proxy.Proxy.resize_server
.. automethod:: openstack.compute.v2._proxy.Proxy.confirm_server_resize
.. automethod:: openstack.compute.v2._proxy.Proxy.revert_server_resize
.. automethod:: openstack.compute.v2._proxy.Proxy.rebuild_server
.. automethod:: openstack.compute.v2._proxy.Proxy.reset_server_state
.. automethod:: openstack.compute.v2._proxy.Proxy.change_server_password
Image Operations
^^^^^^^^^^^^^^^^
.. autoclass:: openstack.compute.v2._proxy.Proxy
.. automethod:: openstack.compute.v2._proxy.Proxy.images
.. automethod:: openstack.compute.v2._proxy.Proxy.get_image
.. automethod:: openstack.compute.v2._proxy.Proxy.find_image
.. automethod:: openstack.compute.v2._proxy.Proxy.delete_image
.. automethod:: openstack.compute.v2._proxy.Proxy.get_image_metadata
.. automethod:: openstack.compute.v2._proxy.Proxy.set_image_metadata
.. automethod:: openstack.compute.v2._proxy.Proxy.delete_image_metadata
Flavor Operations
^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.compute.v2._proxy.Proxy
.. automethod:: openstack.compute.v2._proxy.Proxy.create_flavor
.. automethod:: openstack.compute.v2._proxy.Proxy.delete_flavor
.. automethod:: openstack.compute.v2._proxy.Proxy.get_flavor
.. automethod:: openstack.compute.v2._proxy.Proxy.find_flavor
.. automethod:: openstack.compute.v2._proxy.Proxy.flavors
Service Operations
^^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.compute.v2._proxy.Proxy
.. automethod:: openstack.compute.v2._proxy.Proxy.services
.. automethod:: openstack.compute.v2._proxy.Proxy.enable_service
.. automethod:: openstack.compute.v2._proxy.Proxy.disable_service
.. automethod:: openstack.compute.v2._proxy.Proxy.force_service_down
Volume Attachment Operations
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.compute.v2._proxy.Proxy
.. automethod:: openstack.compute.v2._proxy.Proxy.create_volume_attachment
.. automethod:: openstack.compute.v2._proxy.Proxy.update_volume_attachment
.. automethod:: openstack.compute.v2._proxy.Proxy.delete_volume_attachment
.. automethod:: openstack.compute.v2._proxy.Proxy.get_volume_attachment
.. automethod:: openstack.compute.v2._proxy.Proxy.volume_attachments
Keypair Operations
^^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.compute.v2._proxy.Proxy
.. automethod:: openstack.compute.v2._proxy.Proxy.create_keypair
.. automethod:: openstack.compute.v2._proxy.Proxy.delete_keypair
.. automethod:: openstack.compute.v2._proxy.Proxy.get_keypair
.. automethod:: openstack.compute.v2._proxy.Proxy.find_keypair
.. automethod:: openstack.compute.v2._proxy.Proxy.keypairs
Server IPs
^^^^^^^^^^
.. autoclass:: openstack.compute.v2._proxy.Proxy
.. automethod:: openstack.compute.v2._proxy.Proxy.server_ips
Server Group Operations
^^^^^^^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.compute.v2._proxy.Proxy
.. automethod:: openstack.compute.v2._proxy.Proxy.create_server_group
.. automethod:: openstack.compute.v2._proxy.Proxy.delete_server_group
.. automethod:: openstack.compute.v2._proxy.Proxy.get_server_group
.. automethod:: openstack.compute.v2._proxy.Proxy.find_server_group
.. automethod:: openstack.compute.v2._proxy.Proxy.server_groups
Server Interface Operations
^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.compute.v2._proxy.Proxy
.. automethod:: openstack.compute.v2._proxy.Proxy.create_server_interface
.. automethod:: openstack.compute.v2._proxy.Proxy.delete_server_interface
.. automethod:: openstack.compute.v2._proxy.Proxy.get_server_interface
.. automethod:: openstack.compute.v2._proxy.Proxy.server_interfaces
Availability Zone Operations
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.compute.v2._proxy.Proxy
.. automethod:: openstack.compute.v2._proxy.Proxy.availability_zones
Limits Operations
^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.compute.v2._proxy.Proxy
.. automethod:: openstack.compute.v2._proxy.Proxy.get_limits
Hypervisor Operations
^^^^^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.compute.v2._proxy.Proxy
.. automethod:: openstack.compute.v2._proxy.Proxy.get_hypervisor
.. automethod:: openstack.compute.v2._proxy.Proxy.find_hypervisor
.. automethod:: openstack.compute.v2._proxy.Proxy.hypervisors
Extension Operations
^^^^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.compute.v2._proxy.Proxy
.. automethod:: openstack.compute.v2._proxy.Proxy.find_extension
.. automethod:: openstack.compute.v2._proxy.Proxy.extensions

View File

@ -1,56 +0,0 @@
Database API
============
For details on how to use database, see :doc:`/users/guides/database`
.. automodule:: openstack.database.v1._proxy
The Database Class
------------------
The database high-level interface is available through the ``database``
member of a :class:`~openstack.connection.Connection` object. The
``database`` member will only be added if the service is detected.
Database Operations
^^^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.database.v1._proxy.Proxy
.. automethod:: openstack.database.v1._proxy.Proxy.create_database
.. automethod:: openstack.database.v1._proxy.Proxy.delete_database
.. automethod:: openstack.database.v1._proxy.Proxy.get_database
.. automethod:: openstack.database.v1._proxy.Proxy.find_database
.. automethod:: openstack.database.v1._proxy.Proxy.databases
Flavor Operations
^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.database.v1._proxy.Proxy
.. automethod:: openstack.database.v1._proxy.Proxy.get_flavor
.. automethod:: openstack.database.v1._proxy.Proxy.find_flavor
.. automethod:: openstack.database.v1._proxy.Proxy.flavors
Instance Operations
^^^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.database.v1._proxy.Proxy
.. automethod:: openstack.database.v1._proxy.Proxy.create_instance
.. automethod:: openstack.database.v1._proxy.Proxy.update_instance
.. automethod:: openstack.database.v1._proxy.Proxy.delete_instance
.. automethod:: openstack.database.v1._proxy.Proxy.get_instance
.. automethod:: openstack.database.v1._proxy.Proxy.find_instance
.. automethod:: openstack.database.v1._proxy.Proxy.instances
User Operations
^^^^^^^^^^^^^^^
.. autoclass:: openstack.database.v1._proxy.Proxy
.. automethod:: openstack.database.v1._proxy.Proxy.create_user
.. automethod:: openstack.database.v1._proxy.Proxy.delete_user
.. automethod:: openstack.database.v1._proxy.Proxy.get_user
.. automethod:: openstack.database.v1._proxy.Proxy.find_user
.. automethod:: openstack.database.v1._proxy.Proxy.users

View File

@ -1,57 +0,0 @@
Identity API v2
===============
For details on how to use identity, see :doc:`/users/guides/identity`
.. automodule:: openstack.identity.v2._proxy
The Identity v2 Class
---------------------
The identity high-level interface is available through the ``identity``
member of a :class:`~openstack.connection.Connection` object. The
``identity`` member will only be added if the service is detected.
Extension Operations
^^^^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.identity.v2._proxy.Proxy
.. automethod:: openstack.identity.v2._proxy.Proxy.get_extension
.. automethod:: openstack.identity.v2._proxy.Proxy.extensions
User Operations
^^^^^^^^^^^^^^^
.. autoclass:: openstack.identity.v2._proxy.Proxy
.. automethod:: openstack.identity.v2._proxy.Proxy.create_user
.. automethod:: openstack.identity.v2._proxy.Proxy.update_user
.. automethod:: openstack.identity.v2._proxy.Proxy.delete_user
.. automethod:: openstack.identity.v2._proxy.Proxy.get_user
.. automethod:: openstack.identity.v2._proxy.Proxy.find_user
.. automethod:: openstack.identity.v2._proxy.Proxy.users
Role Operations
^^^^^^^^^^^^^^^
.. autoclass:: openstack.identity.v2._proxy.Proxy
.. automethod:: openstack.identity.v2._proxy.Proxy.create_role
.. automethod:: openstack.identity.v2._proxy.Proxy.update_role
.. automethod:: openstack.identity.v2._proxy.Proxy.delete_role
.. automethod:: openstack.identity.v2._proxy.Proxy.get_role
.. automethod:: openstack.identity.v2._proxy.Proxy.find_role
.. automethod:: openstack.identity.v2._proxy.Proxy.roles
Tenant Operations
^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.identity.v2._proxy.Proxy
.. automethod:: openstack.identity.v2._proxy.Proxy.create_tenant
.. automethod:: openstack.identity.v2._proxy.Proxy.update_tenant
.. automethod:: openstack.identity.v2._proxy.Proxy.delete_tenant
.. automethod:: openstack.identity.v2._proxy.Proxy.get_tenant
.. automethod:: openstack.identity.v2._proxy.Proxy.find_tenant
.. automethod:: openstack.identity.v2._proxy.Proxy.tenants

View File

@ -1,146 +0,0 @@
Identity API v3
===============
For details on how to use identity, see :doc:`/users/guides/identity`
.. automodule:: openstack.identity.v3._proxy
The Identity v3 Class
---------------------
The identity high-level interface is available through the ``identity``
member of a :class:`~openstack.connection.Connection` object. The
``identity`` member will only be added if the service is detected.
Credential Operations
^^^^^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.identity.v3._proxy.Proxy
.. automethod:: openstack.identity.v3._proxy.Proxy.create_credential
.. automethod:: openstack.identity.v3._proxy.Proxy.update_credential
.. automethod:: openstack.identity.v3._proxy.Proxy.delete_credential
.. automethod:: openstack.identity.v3._proxy.Proxy.get_credential
.. automethod:: openstack.identity.v3._proxy.Proxy.find_credential
.. automethod:: openstack.identity.v3._proxy.Proxy.credentials
Domain Operations
^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.identity.v3._proxy.Proxy
.. automethod:: openstack.identity.v3._proxy.Proxy.create_domain
.. automethod:: openstack.identity.v3._proxy.Proxy.update_domain
.. automethod:: openstack.identity.v3._proxy.Proxy.delete_domain
.. automethod:: openstack.identity.v3._proxy.Proxy.get_domain
.. automethod:: openstack.identity.v3._proxy.Proxy.find_domain
.. automethod:: openstack.identity.v3._proxy.Proxy.domains
Endpoint Operations
^^^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.identity.v3._proxy.Proxy
.. automethod:: openstack.identity.v3._proxy.Proxy.create_endpoint
.. automethod:: openstack.identity.v3._proxy.Proxy.update_endpoint
.. automethod:: openstack.identity.v3._proxy.Proxy.delete_endpoint
.. automethod:: openstack.identity.v3._proxy.Proxy.get_endpoint
.. automethod:: openstack.identity.v3._proxy.Proxy.find_endpoint
.. automethod:: openstack.identity.v3._proxy.Proxy.endpoints
Group Operations
^^^^^^^^^^^^^^^^
.. autoclass:: openstack.identity.v3._proxy.Proxy
.. automethod:: openstack.identity.v3._proxy.Proxy.create_group
.. automethod:: openstack.identity.v3._proxy.Proxy.update_group
.. automethod:: openstack.identity.v3._proxy.Proxy.delete_group
.. automethod:: openstack.identity.v3._proxy.Proxy.get_group
.. automethod:: openstack.identity.v3._proxy.Proxy.find_group
.. automethod:: openstack.identity.v3._proxy.Proxy.groups
Policy Operations
^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.identity.v3._proxy.Proxy
.. automethod:: openstack.identity.v3._proxy.Proxy.create_policy
.. automethod:: openstack.identity.v3._proxy.Proxy.update_policy
.. automethod:: openstack.identity.v3._proxy.Proxy.delete_policy
.. automethod:: openstack.identity.v3._proxy.Proxy.get_policy
.. automethod:: openstack.identity.v3._proxy.Proxy.find_policy
.. automethod:: openstack.identity.v3._proxy.Proxy.policies
Project Operations
^^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.identity.v3._proxy.Proxy
.. automethod:: openstack.identity.v3._proxy.Proxy.create_project
.. automethod:: openstack.identity.v3._proxy.Proxy.update_project
.. automethod:: openstack.identity.v3._proxy.Proxy.delete_project
.. automethod:: openstack.identity.v3._proxy.Proxy.get_project
.. automethod:: openstack.identity.v3._proxy.Proxy.find_project
.. automethod:: openstack.identity.v3._proxy.Proxy.projects
Region Operations
^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.identity.v3._proxy.Proxy
.. automethod:: openstack.identity.v3._proxy.Proxy.create_region
.. automethod:: openstack.identity.v3._proxy.Proxy.update_region
.. automethod:: openstack.identity.v3._proxy.Proxy.delete_region
.. automethod:: openstack.identity.v3._proxy.Proxy.get_region
.. automethod:: openstack.identity.v3._proxy.Proxy.find_region
.. automethod:: openstack.identity.v3._proxy.Proxy.regions
Role Operations
^^^^^^^^^^^^^^^
.. autoclass:: openstack.identity.v3._proxy.Proxy
.. automethod:: openstack.identity.v3._proxy.Proxy.create_role
.. automethod:: openstack.identity.v3._proxy.Proxy.update_role
.. automethod:: openstack.identity.v3._proxy.Proxy.delete_role
.. automethod:: openstack.identity.v3._proxy.Proxy.get_role
.. automethod:: openstack.identity.v3._proxy.Proxy.find_role
.. automethod:: openstack.identity.v3._proxy.Proxy.roles
.. automethod:: openstack.identity.v3._proxy.Proxy.role_assignments
.. automethod:: openstack.identity.v3._proxy.Proxy.role_assignments_filter
Service Operations
^^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.identity.v3._proxy.Proxy
.. automethod:: openstack.identity.v3._proxy.Proxy.create_service
.. automethod:: openstack.identity.v3._proxy.Proxy.update_service
.. automethod:: openstack.identity.v3._proxy.Proxy.delete_service
.. automethod:: openstack.identity.v3._proxy.Proxy.get_service
.. automethod:: openstack.identity.v3._proxy.Proxy.find_service
.. automethod:: openstack.identity.v3._proxy.Proxy.services
Trust Operations
^^^^^^^^^^^^^^^^
.. autoclass:: openstack.identity.v3._proxy.Proxy
.. automethod:: openstack.identity.v3._proxy.Proxy.create_trust
.. automethod:: openstack.identity.v3._proxy.Proxy.delete_trust
.. automethod:: openstack.identity.v3._proxy.Proxy.get_trust
.. automethod:: openstack.identity.v3._proxy.Proxy.find_trust
.. automethod:: openstack.identity.v3._proxy.Proxy.trusts
User Operations
^^^^^^^^^^^^^^^
.. autoclass:: openstack.identity.v3._proxy.Proxy
.. automethod:: openstack.identity.v3._proxy.Proxy.create_user
.. automethod:: openstack.identity.v3._proxy.Proxy.update_user
.. automethod:: openstack.identity.v3._proxy.Proxy.delete_user
.. automethod:: openstack.identity.v3._proxy.Proxy.get_user
.. automethod:: openstack.identity.v3._proxy.Proxy.find_user
.. automethod:: openstack.identity.v3._proxy.Proxy.users

View File

@ -1,22 +0,0 @@
Image API v1
============
For details on how to use image, see :doc:`/users/guides/image`
.. automodule:: openstack.image.v1._proxy
The Image v1 Class
------------------
The image high-level interface is available through the ``image`` member of a
:class:`~openstack.connection.Connection` object. The ``image`` member will
only be added if the service is detected.
.. autoclass:: openstack.image.v1._proxy.Proxy
.. automethod:: openstack.image.v1._proxy.Proxy.upload_image
.. automethod:: openstack.image.v1._proxy.Proxy.update_image
.. automethod:: openstack.image.v1._proxy.Proxy.delete_image
.. automethod:: openstack.image.v1._proxy.Proxy.get_image
.. automethod:: openstack.image.v1._proxy.Proxy.find_image
.. automethod:: openstack.image.v1._proxy.Proxy.images

View File

@ -1,42 +0,0 @@
Image API v2
============
For details on how to use image, see :doc:`/users/guides/image`
.. automodule:: openstack.image.v2._proxy
The Image v2 Class
------------------
The image high-level interface is available through the ``image`` member of a
:class:`~openstack.connection.Connection` object. The ``image`` member will
only be added if the service is detected.
Image Operations
^^^^^^^^^^^^^^^^
.. autoclass:: openstack.image.v2._proxy.Proxy
.. automethod:: openstack.image.v2._proxy.Proxy.upload_image
.. automethod:: openstack.image.v2._proxy.Proxy.download_image
.. automethod:: openstack.image.v2._proxy.Proxy.update_image
.. automethod:: openstack.image.v2._proxy.Proxy.delete_image
.. automethod:: openstack.image.v2._proxy.Proxy.get_image
.. automethod:: openstack.image.v2._proxy.Proxy.find_image
.. automethod:: openstack.image.v2._proxy.Proxy.images
.. automethod:: openstack.image.v2._proxy.Proxy.deactivate_image
.. automethod:: openstack.image.v2._proxy.Proxy.reactivate_image
.. automethod:: openstack.image.v2._proxy.Proxy.add_tag
.. automethod:: openstack.image.v2._proxy.Proxy.remove_tag
Member Operations
^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.image.v2._proxy.Proxy
.. automethod:: openstack.image.v2._proxy.Proxy.add_member
.. automethod:: openstack.image.v2._proxy.Proxy.remove_member
.. automethod:: openstack.image.v2._proxy.Proxy.update_member
.. automethod:: openstack.image.v2._proxy.Proxy.get_member
.. automethod:: openstack.image.v2._proxy.Proxy.find_member
.. automethod:: openstack.image.v2._proxy.Proxy.members

View File

@ -1,51 +0,0 @@
KeyManager API
==============
For details on how to use key_management, see
:doc:`/users/guides/key_manager`
.. automodule:: openstack.key_manager.v1._proxy
The KeyManager Class
--------------------
The key_management high-level interface is available through the
``key_manager`` member of a :class:`~openstack.connection.Connection`
object. The ``key_manager`` member will only be added if the service is
detected.
Secret Operations
^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.key_manager.v1._proxy.Proxy
.. automethod:: openstack.key_manager.v1._proxy.Proxy.create_secret
.. automethod:: openstack.key_manager.v1._proxy.Proxy.update_secret
.. automethod:: openstack.key_manager.v1._proxy.Proxy.delete_secret
.. automethod:: openstack.key_manager.v1._proxy.Proxy.get_secret
.. automethod:: openstack.key_manager.v1._proxy.Proxy.find_secret
.. automethod:: openstack.key_manager.v1._proxy.Proxy.secrets
Container Operations
^^^^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.key_manager.v1._proxy.Proxy
.. automethod:: openstack.key_manager.v1._proxy.Proxy.create_container
.. automethod:: openstack.key_manager.v1._proxy.Proxy.update_container
.. automethod:: openstack.key_manager.v1._proxy.Proxy.delete_container
.. automethod:: openstack.key_manager.v1._proxy.Proxy.get_container
.. automethod:: openstack.key_manager.v1._proxy.Proxy.find_container
.. automethod:: openstack.key_manager.v1._proxy.Proxy.containers
Order Operations
^^^^^^^^^^^^^^^^
.. autoclass:: openstack.key_manager.v1._proxy.Proxy
.. automethod:: openstack.key_manager.v1._proxy.Proxy.create_order
.. automethod:: openstack.key_manager.v1._proxy.Proxy.update_order
.. automethod:: openstack.key_manager.v1._proxy.Proxy.delete_order
.. automethod:: openstack.key_manager.v1._proxy.Proxy.get_order
.. automethod:: openstack.key_manager.v1._proxy.Proxy.find_order
.. automethod:: openstack.key_manager.v1._proxy.Proxy.orders

View File

@ -1,22 +0,0 @@
Load Balancer v2 API
====================
.. automodule:: openstack.load_balancer.v2._proxy
The LoadBalancer Class
----------------------
The load_balancer high-level interface is available through the
``load_balancer`` member of a :class:`~openstack.connection.Connection` object.
The ``load_balancer`` member will only be added if the service is detected.
Load Balancer Operations
^^^^^^^^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.load_balancer.v2._proxy.Proxy
.. automethod:: openstack.load_balancer.v2._proxy.Proxy.create_load_balancer
.. automethod:: openstack.load_balancer.v2._proxy.Proxy.get_load_balancer
.. automethod:: openstack.load_balancer.v2._proxy.Proxy.load_balancers
.. automethod:: openstack.load_balancer.v2._proxy.Proxy.delete_load_balancer
.. automethod:: openstack.load_balancer.v2._proxy.Proxy.find_load_balancer

View File

@ -1,30 +0,0 @@
Message API v1
==============
For details on how to use message, see :doc:`/users/guides/message`
.. automodule:: openstack.message.v1._proxy
The Message v1 Class
--------------------
The message high-level interface is available through the ``message`` member
of a :class:`~openstack.connection.Connection` object. The ``message``
member will only be added if the service is detected.
Message Operations
^^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.message.v1._proxy.Proxy
.. automethod:: openstack.message.v1._proxy.Proxy.claim_messages
.. automethod:: openstack.message.v1._proxy.Proxy.create_messages
.. automethod:: openstack.message.v1._proxy.Proxy.delete_message
Queue Operations
^^^^^^^^^^^^^^^^
.. autoclass:: openstack.message.v1._proxy.Proxy
.. automethod:: openstack.message.v1._proxy.Proxy.create_queue
.. automethod:: openstack.message.v1._proxy.Proxy.delete_queue

View File

@ -1,53 +0,0 @@
Message API v2
==============
For details on how to use message, see :doc:`/users/guides/message`
.. automodule:: openstack.message.v2._proxy
The Message v2 Class
--------------------
The message high-level interface is available through the ``message`` member
of a :class:`~openstack.connection.Connection` object. The ``message``
member will only be added if the service is detected.
Message Operations
^^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.message.v2._proxy.Proxy
.. automethod:: openstack.message.v2._proxy.Proxy.post_message
.. automethod:: openstack.message.v2._proxy.Proxy.delete_message
.. automethod:: openstack.message.v2._proxy.Proxy.get_message
.. automethod:: openstack.message.v2._proxy.Proxy.messages
Queue Operations
^^^^^^^^^^^^^^^^
.. autoclass:: openstack.message.v2._proxy.Proxy
.. automethod:: openstack.message.v2._proxy.Proxy.create_queue
.. automethod:: openstack.message.v2._proxy.Proxy.delete_queue
.. automethod:: openstack.message.v2._proxy.Proxy.get_queue
.. automethod:: openstack.message.v2._proxy.Proxy.queues
Claim Operations
^^^^^^^^^^^^^^^^
.. autoclass:: openstack.message.v2._proxy.Proxy
.. automethod:: openstack.message.v2._proxy.Proxy.create_claim
.. automethod:: openstack.message.v2._proxy.Proxy.update_claim
.. automethod:: openstack.message.v2._proxy.Proxy.delete_claim
.. automethod:: openstack.message.v2._proxy.Proxy.get_claim
Subscription Operations
^^^^^^^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.message.v2._proxy.Proxy
.. automethod:: openstack.message.v2._proxy.Proxy.create_subscription
.. automethod:: openstack.message.v2._proxy.Proxy.delete_subscription
.. automethod:: openstack.message.v2._proxy.Proxy.get_subscription
.. automethod:: openstack.message.v2._proxy.Proxy.subscriptions

View File

@ -1,18 +0,0 @@
Metric API
==========
.. automodule:: openstack.metric.v1._proxy
The Metric Class
----------------
The metric high-level interface is available through the ``metric``
member of a :class:`~openstack.connection.Connection` object. The
``metric`` member will only be added if the service is detected.
Capability Operations
^^^^^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.metric.v1._proxy.Proxy
.. automethod:: openstack.metric.v1._proxy.Proxy.capabilities

View File

@ -1,367 +0,0 @@
Network API
===========
For details on how to use network, see :doc:`/users/guides/network`
.. automodule:: openstack.network.v2._proxy
The Network Class
-----------------
The network high-level interface is available through the ``network``
member of a :class:`~openstack.connection.Connection` object. The
``network`` member will only be added if the service is detected.
Network Operations
^^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.network.v2._proxy.Proxy
.. automethod:: openstack.network.v2._proxy.Proxy.create_network
.. automethod:: openstack.network.v2._proxy.Proxy.update_network
.. automethod:: openstack.network.v2._proxy.Proxy.delete_network
.. automethod:: openstack.network.v2._proxy.Proxy.get_network
.. automethod:: openstack.network.v2._proxy.Proxy.find_network
.. automethod:: openstack.network.v2._proxy.Proxy.networks
.. automethod:: openstack.network.v2._proxy.Proxy.get_network_ip_availability
.. automethod:: openstack.network.v2._proxy.Proxy.find_network_ip_availability
.. automethod:: openstack.network.v2._proxy.Proxy.network_ip_availabilities
.. automethod:: openstack.network.v2._proxy.Proxy.add_dhcp_agent_to_network
.. automethod:: openstack.network.v2._proxy.Proxy.remove_dhcp_agent_from_network
.. automethod:: openstack.network.v2._proxy.Proxy.dhcp_agent_hosting_networks
Port Operations
^^^^^^^^^^^^^^^
.. autoclass:: openstack.network.v2._proxy.Proxy
.. automethod:: openstack.network.v2._proxy.Proxy.create_port
.. automethod:: openstack.network.v2._proxy.Proxy.update_port
.. automethod:: openstack.network.v2._proxy.Proxy.delete_port
.. automethod:: openstack.network.v2._proxy.Proxy.get_port
.. automethod:: openstack.network.v2._proxy.Proxy.find_port
.. automethod:: openstack.network.v2._proxy.Proxy.ports
.. automethod:: openstack.network.v2._proxy.Proxy.add_ip_to_port
.. automethod:: openstack.network.v2._proxy.Proxy.remove_ip_from_port
Router Operations
^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.network.v2._proxy.Proxy
.. automethod:: openstack.network.v2._proxy.Proxy.create_router
.. automethod:: openstack.network.v2._proxy.Proxy.update_router
.. automethod:: openstack.network.v2._proxy.Proxy.delete_router
.. automethod:: openstack.network.v2._proxy.Proxy.get_router
.. automethod:: openstack.network.v2._proxy.Proxy.find_router
.. automethod:: openstack.network.v2._proxy.Proxy.routers
.. automethod:: openstack.network.v2._proxy.Proxy.add_gateway_to_router
.. automethod:: openstack.network.v2._proxy.Proxy.remove_gateway_from_router
.. automethod:: openstack.network.v2._proxy.Proxy.add_interface_to_router
.. automethod:: openstack.network.v2._proxy.Proxy.remove_interface_from_router
Floating IP Operations
^^^^^^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.network.v2._proxy.Proxy
.. automethod:: openstack.network.v2._proxy.Proxy.create_ip
.. automethod:: openstack.network.v2._proxy.Proxy.update_ip
.. automethod:: openstack.network.v2._proxy.Proxy.delete_ip
.. automethod:: openstack.network.v2._proxy.Proxy.get_ip
.. automethod:: openstack.network.v2._proxy.Proxy.find_ip
.. automethod:: openstack.network.v2._proxy.Proxy.find_available_ip
.. automethod:: openstack.network.v2._proxy.Proxy.ips
Pool Operations
^^^^^^^^^^^^^^^
.. autoclass:: openstack.network.v2._proxy.Proxy
.. automethod:: openstack.network.v2._proxy.Proxy.create_pool
.. automethod:: openstack.network.v2._proxy.Proxy.update_pool
.. automethod:: openstack.network.v2._proxy.Proxy.delete_pool
.. automethod:: openstack.network.v2._proxy.Proxy.get_pool
.. automethod:: openstack.network.v2._proxy.Proxy.find_pool
.. automethod:: openstack.network.v2._proxy.Proxy.pools
.. automethod:: openstack.network.v2._proxy.Proxy.create_pool_member
.. automethod:: openstack.network.v2._proxy.Proxy.update_pool_member
.. automethod:: openstack.network.v2._proxy.Proxy.delete_pool_member
.. automethod:: openstack.network.v2._proxy.Proxy.get_pool_member
.. automethod:: openstack.network.v2._proxy.Proxy.find_pool_member
.. automethod:: openstack.network.v2._proxy.Proxy.pool_members
Auto Allocated Topology Operations
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.network.v2._proxy.Proxy
.. automethod:: openstack.network.v2._proxy.Proxy.delete_auto_allocated_topology
.. automethod:: openstack.network.v2._proxy.Proxy.get_auto_allocated_topology
.. automethod:: openstack.network.v2._proxy.Proxy.validate_auto_allocated_topology
Security Group Operations
^^^^^^^^^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.network.v2._proxy.Proxy
.. automethod:: openstack.network.v2._proxy.Proxy.create_security_group
.. automethod:: openstack.network.v2._proxy.Proxy.update_security_group
.. automethod:: openstack.network.v2._proxy.Proxy.delete_security_group
.. automethod:: openstack.network.v2._proxy.Proxy.get_security_group
.. automethod:: openstack.network.v2._proxy.Proxy.get_security_group_rule
.. automethod:: openstack.network.v2._proxy.Proxy.find_security_group
.. automethod:: openstack.network.v2._proxy.Proxy.find_security_group_rule
.. automethod:: openstack.network.v2._proxy.Proxy.security_group_rules
.. automethod:: openstack.network.v2._proxy.Proxy.security_groups
.. automethod:: openstack.network.v2._proxy.Proxy.security_group_allow_ping
.. automethod:: openstack.network.v2._proxy.Proxy.security_group_open_port
.. automethod:: openstack.network.v2._proxy.Proxy.create_security_group_rule
.. automethod:: openstack.network.v2._proxy.Proxy.delete_security_group_rule
Availability Zone Operations
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.network.v2._proxy.Proxy
.. automethod:: openstack.network.v2._proxy.Proxy.availability_zones
Address Scope Operations
^^^^^^^^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.network.v2._proxy.Proxy
.. automethod:: openstack.network.v2._proxy.Proxy.create_address_scope
.. automethod:: openstack.network.v2._proxy.Proxy.update_address_scope
.. automethod:: openstack.network.v2._proxy.Proxy.delete_address_scope
.. automethod:: openstack.network.v2._proxy.Proxy.get_address_scope
.. automethod:: openstack.network.v2._proxy.Proxy.find_address_scope
.. automethod:: openstack.network.v2._proxy.Proxy.address_scopes
Quota Operations
^^^^^^^^^^^^^^^^
.. autoclass:: openstack.network.v2._proxy.Proxy
.. automethod:: openstack.network.v2._proxy.Proxy.update_quota
.. automethod:: openstack.network.v2._proxy.Proxy.delete_quota
.. automethod:: openstack.network.v2._proxy.Proxy.get_quota
.. automethod:: openstack.network.v2._proxy.Proxy.get_quota_default
.. automethod:: openstack.network.v2._proxy.Proxy.quotas
QoS Operations
^^^^^^^^^^^^^^
.. autoclass:: openstack.network.v2._proxy.Proxy
.. automethod:: openstack.network.v2._proxy.Proxy.create_qos_policy
.. automethod:: openstack.network.v2._proxy.Proxy.update_qos_policy
.. automethod:: openstack.network.v2._proxy.Proxy.delete_qos_policy
.. automethod:: openstack.network.v2._proxy.Proxy.get_qos_policy
.. automethod:: openstack.network.v2._proxy.Proxy.find_qos_policy
.. automethod:: openstack.network.v2._proxy.Proxy.qos_policies
.. automethod:: openstack.network.v2._proxy.Proxy.qos_rule_types
.. automethod:: openstack.network.v2._proxy.Proxy.create_qos_minimum_bandwidth_rule
.. automethod:: openstack.network.v2._proxy.Proxy.update_qos_minimum_bandwidth_rule
.. automethod:: openstack.network.v2._proxy.Proxy.delete_qos_minimum_bandwidth_rule
.. automethod:: openstack.network.v2._proxy.Proxy.get_qos_minimum_bandwidth_rule
.. automethod:: openstack.network.v2._proxy.Proxy.find_qos_minimum_bandwidth_rule
.. automethod:: openstack.network.v2._proxy.Proxy.qos_minimum_bandwidth_rules
.. automethod:: openstack.network.v2._proxy.Proxy.create_qos_bandwidth_limit_rule
.. automethod:: openstack.network.v2._proxy.Proxy.update_qos_bandwidth_limit_rule
.. automethod:: openstack.network.v2._proxy.Proxy.delete_qos_bandwidth_limit_rule
.. automethod:: openstack.network.v2._proxy.Proxy.get_qos_bandwidth_limit_rule
.. automethod:: openstack.network.v2._proxy.Proxy.find_qos_bandwidth_limit_rule
.. automethod:: openstack.network.v2._proxy.Proxy.qos_bandwidth_limit_rules
.. automethod:: openstack.network.v2._proxy.Proxy.create_qos_dscp_marking_rule
.. automethod:: openstack.network.v2._proxy.Proxy.update_qos_dscp_marking_rule
.. automethod:: openstack.network.v2._proxy.Proxy.delete_qos_dscp_marking_rule
.. automethod:: openstack.network.v2._proxy.Proxy.get_qos_dscp_marking_rule
.. automethod:: openstack.network.v2._proxy.Proxy.find_qos_dscp_marking_rule
.. automethod:: openstack.network.v2._proxy.Proxy.qos_dscp_marking_rules
Agent Operations
^^^^^^^^^^^^^^^^
.. autoclass:: openstack.network.v2._proxy.Proxy
.. automethod:: openstack.network.v2._proxy.Proxy.delete_agent
.. automethod:: openstack.network.v2._proxy.Proxy.update_agent
.. automethod:: openstack.network.v2._proxy.Proxy.get_agent
.. automethod:: openstack.network.v2._proxy.Proxy.agents
.. automethod:: openstack.network.v2._proxy.Proxy.agent_hosted_routers
.. automethod:: openstack.network.v2._proxy.Proxy.routers_hosting_l3_agents
.. automethod:: openstack.network.v2._proxy.Proxy.network_hosting_dhcp_agents
.. automethod:: openstack.network.v2._proxy.Proxy.add_router_to_agent
.. automethod:: openstack.network.v2._proxy.Proxy.remove_router_from_agent
RBAC Operations
^^^^^^^^^^^^^^^
.. autoclass:: openstack.network.v2._proxy.Proxy
.. automethod:: openstack.network.v2._proxy.Proxy.create_rbac_policy
.. automethod:: openstack.network.v2._proxy.Proxy.update_rbac_policy
.. automethod:: openstack.network.v2._proxy.Proxy.delete_rbac_policy
.. automethod:: openstack.network.v2._proxy.Proxy.get_rbac_policy
.. automethod:: openstack.network.v2._proxy.Proxy.find_rbac_policy
.. automethod:: openstack.network.v2._proxy.Proxy.rbac_policies
Listener Operations
^^^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.network.v2._proxy.Proxy
.. automethod:: openstack.network.v2._proxy.Proxy.create_listener
.. automethod:: openstack.network.v2._proxy.Proxy.update_listener
.. automethod:: openstack.network.v2._proxy.Proxy.delete_listener
.. automethod:: openstack.network.v2._proxy.Proxy.get_listener
.. automethod:: openstack.network.v2._proxy.Proxy.find_listener
.. automethod:: openstack.network.v2._proxy.Proxy.listeners
Subnet Operations
^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.network.v2._proxy.Proxy
.. automethod:: openstack.network.v2._proxy.Proxy.create_subnet
.. automethod:: openstack.network.v2._proxy.Proxy.update_subnet
.. automethod:: openstack.network.v2._proxy.Proxy.delete_subnet
.. automethod:: openstack.network.v2._proxy.Proxy.get_subnet
.. automethod:: openstack.network.v2._proxy.Proxy.get_subnet_ports
.. automethod:: openstack.network.v2._proxy.Proxy.find_subnet
.. automethod:: openstack.network.v2._proxy.Proxy.subnets
.. automethod:: openstack.network.v2._proxy.Proxy.create_subnet_pool
.. automethod:: openstack.network.v2._proxy.Proxy.update_subnet_pool
.. automethod:: openstack.network.v2._proxy.Proxy.delete_subnet_pool
.. automethod:: openstack.network.v2._proxy.Proxy.get_subnet_pool
.. automethod:: openstack.network.v2._proxy.Proxy.find_subnet_pool
.. automethod:: openstack.network.v2._proxy.Proxy.subnet_pools
Load Balancer Operations
^^^^^^^^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.network.v2._proxy.Proxy
.. automethod:: openstack.network.v2._proxy.Proxy.create_load_balancer
.. automethod:: openstack.network.v2._proxy.Proxy.update_load_balancer
.. automethod:: openstack.network.v2._proxy.Proxy.delete_load_balancer
.. automethod:: openstack.network.v2._proxy.Proxy.get_load_balancer
.. automethod:: openstack.network.v2._proxy.Proxy.find_load_balancer
.. automethod:: openstack.network.v2._proxy.Proxy.load_balancers
Health Monitor Operations
^^^^^^^^^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.network.v2._proxy.Proxy
.. automethod:: openstack.network.v2._proxy.Proxy.create_health_monitor
.. automethod:: openstack.network.v2._proxy.Proxy.update_health_monitor
.. automethod:: openstack.network.v2._proxy.Proxy.delete_health_monitor
.. automethod:: openstack.network.v2._proxy.Proxy.get_health_monitor
.. automethod:: openstack.network.v2._proxy.Proxy.find_health_monitor
.. automethod:: openstack.network.v2._proxy.Proxy.health_monitors
Metering Label Operations
^^^^^^^^^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.network.v2._proxy.Proxy
.. automethod:: openstack.network.v2._proxy.Proxy.create_metering_label
.. automethod:: openstack.network.v2._proxy.Proxy.update_metering_label
.. automethod:: openstack.network.v2._proxy.Proxy.delete_metering_label
.. automethod:: openstack.network.v2._proxy.Proxy.get_metering_label
.. automethod:: openstack.network.v2._proxy.Proxy.find_metering_label
.. automethod:: openstack.network.v2._proxy.Proxy.metering_labels
.. automethod:: openstack.network.v2._proxy.Proxy.create_metering_label_rule
.. automethod:: openstack.network.v2._proxy.Proxy.update_metering_label_rule
.. automethod:: openstack.network.v2._proxy.Proxy.delete_metering_label_rule
.. automethod:: openstack.network.v2._proxy.Proxy.get_metering_label_rule
.. automethod:: openstack.network.v2._proxy.Proxy.find_metering_label_rule
.. automethod:: openstack.network.v2._proxy.Proxy.metering_label_rules
Segment Operations
^^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.network.v2._proxy.Proxy
.. automethod:: openstack.network.v2._proxy.Proxy.create_segment
.. automethod:: openstack.network.v2._proxy.Proxy.update_segment
.. automethod:: openstack.network.v2._proxy.Proxy.delete_segment
.. automethod:: openstack.network.v2._proxy.Proxy.get_segment
.. automethod:: openstack.network.v2._proxy.Proxy.find_segment
.. automethod:: openstack.network.v2._proxy.Proxy.segments
Flavor Operations
^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.network.v2._proxy.Proxy
.. automethod:: openstack.network.v2._proxy.Proxy.create_flavor
.. automethod:: openstack.network.v2._proxy.Proxy.update_flavor
.. automethod:: openstack.network.v2._proxy.Proxy.delete_flavor
.. automethod:: openstack.network.v2._proxy.Proxy.get_flavor
.. automethod:: openstack.network.v2._proxy.Proxy.find_flavor
.. automethod:: openstack.network.v2._proxy.Proxy.flavors
Service Profile Operations
^^^^^^^^^^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.network.v2._proxy.Proxy
.. automethod:: openstack.network.v2._proxy.Proxy.create_service_profile
.. automethod:: openstack.network.v2._proxy.Proxy.update_service_profile
.. automethod:: openstack.network.v2._proxy.Proxy.delete_service_profile
.. automethod:: openstack.network.v2._proxy.Proxy.get_service_profile
.. automethod:: openstack.network.v2._proxy.Proxy.find_service_profile
.. automethod:: openstack.network.v2._proxy.Proxy.service_profiles
.. automethod:: openstack.network.v2._proxy.Proxy.associate_flavor_with_service_profile
.. automethod:: openstack.network.v2._proxy.Proxy.disassociate_flavor_from_service_profile
Tag Operations
^^^^^^^^^^^^^^
.. autoclass:: openstack.network.v2._proxy.Proxy
.. automethod:: openstack.network.v2._proxy.Proxy.set_tags
VPN Operations
^^^^^^^^^^^^^^
.. autoclass:: openstack.network.v2._proxy.Proxy
.. automethod:: openstack.network.v2._proxy.Proxy.create_vpn_service
.. automethod:: openstack.network.v2._proxy.Proxy.update_vpn_service
.. automethod:: openstack.network.v2._proxy.Proxy.delete_vpn_service
.. automethod:: openstack.network.v2._proxy.Proxy.get_vpn_service
.. automethod:: openstack.network.v2._proxy.Proxy.find_vpn_service
.. automethod:: openstack.network.v2._proxy.Proxy.vpn_services
Extension Operations
^^^^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.network.v2._proxy.Proxy
.. automethod:: openstack.network.v2._proxy.Proxy.find_extension
.. automethod:: openstack.network.v2._proxy.Proxy.extensions
Service Provider Operations
^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.network.v2._proxy.Proxy
.. automethod:: openstack.network.v2._proxy.Proxy.service_providers

View File

@ -1,50 +0,0 @@
Object Store API
================
For details on how to use this API, see :doc:`/users/guides/object_store`
.. automodule:: openstack.object_store.v1._proxy
The Object Store Class
----------------------
The Object Store high-level interface is exposed as the ``object_store``
object on :class:`~openstack.connection.Connection` objects.
Account Operations
^^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.object_store.v1._proxy.Proxy
.. automethod:: openstack.object_store.v1._proxy.Proxy.get_account_metadata
.. automethod:: openstack.object_store.v1._proxy.Proxy.set_account_metadata
.. automethod:: openstack.object_store.v1._proxy.Proxy.delete_account_metadata
Container Operations
^^^^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.object_store.v1._proxy.Proxy
.. automethod:: openstack.object_store.v1._proxy.Proxy.create_container
.. automethod:: openstack.object_store.v1._proxy.Proxy.delete_container
.. automethod:: openstack.object_store.v1._proxy.Proxy.containers
.. automethod:: openstack.object_store.v1._proxy.Proxy.get_container_metadata
.. automethod:: openstack.object_store.v1._proxy.Proxy.set_container_metadata
.. automethod:: openstack.object_store.v1._proxy.Proxy.delete_container_metadata
Object Operations
^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.object_store.v1._proxy.Proxy
.. automethod:: openstack.object_store.v1._proxy.Proxy.upload_object
.. automethod:: openstack.object_store.v1._proxy.Proxy.download_object
.. automethod:: openstack.object_store.v1._proxy.Proxy.copy_object
.. automethod:: openstack.object_store.v1._proxy.Proxy.delete_object
.. automethod:: openstack.object_store.v1._proxy.Proxy.get_object
.. automethod:: openstack.object_store.v1._proxy.Proxy.objects
.. automethod:: openstack.object_store.v1._proxy.Proxy.get_object_metadata
.. automethod:: openstack.object_store.v1._proxy.Proxy.set_object_metadata
.. automethod:: openstack.object_store.v1._proxy.Proxy.delete_object_metadata

View File

@ -1,53 +0,0 @@
Orchestration API
=================
For details on how to use orchestration, see :doc:`/users/guides/orchestration`
.. automodule:: openstack.orchestration.v1._proxy
The Orchestration Class
-----------------------
The orchestration high-level interface is available through the
``orchestration`` member of a :class:`~openstack.connection.Connection`
object. The ``orchestration`` member will only be added if the service
is detected.
Stack Operations
^^^^^^^^^^^^^^^^
.. autoclass:: openstack.orchestration.v1._proxy.Proxy
.. automethod:: openstack.orchestration.v1._proxy.Proxy.create_stack
.. automethod:: openstack.orchestration.v1._proxy.Proxy.check_stack
.. automethod:: openstack.orchestration.v1._proxy.Proxy.update_stack
.. automethod:: openstack.orchestration.v1._proxy.Proxy.delete_stack
.. automethod:: openstack.orchestration.v1._proxy.Proxy.find_stack
.. automethod:: openstack.orchestration.v1._proxy.Proxy.get_stack
.. automethod:: openstack.orchestration.v1._proxy.Proxy.get_stack_environment
.. automethod:: openstack.orchestration.v1._proxy.Proxy.get_stack_files
.. automethod:: openstack.orchestration.v1._proxy.Proxy.get_stack_template
.. automethod:: openstack.orchestration.v1._proxy.Proxy.stacks
.. automethod:: openstack.orchestration.v1._proxy.Proxy.validate_template
.. automethod:: openstack.orchestration.v1._proxy.Proxy.resources
Software Configuration Operations
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.orchestration.v1._proxy.Proxy
.. automethod:: openstack.orchestration.v1._proxy.Proxy.create_software_config
.. automethod:: openstack.orchestration.v1._proxy.Proxy.delete_software_config
.. automethod:: openstack.orchestration.v1._proxy.Proxy.get_software_config
.. automethod:: openstack.orchestration.v1._proxy.Proxy.software_configs
Software Deployment Operations
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.orchestration.v1._proxy.Proxy
.. automethod:: openstack.orchestration.v1._proxy.Proxy.create_software_deployment
.. automethod:: openstack.orchestration.v1._proxy.Proxy.update_software_deployment
.. automethod:: openstack.orchestration.v1._proxy.Proxy.delete_software_deployment
.. automethod:: openstack.orchestration.v1._proxy.Proxy.get_software_deployment
.. automethod:: openstack.orchestration.v1._proxy.Proxy.software_deployments

View File

@ -1,85 +0,0 @@
Telemetry API
=============
.. caution::
BETA: This API is a work in progress and is subject to change.
For details on how to use telemetry, see :doc:`/users/guides/telemetry`
.. automodule:: openstack.telemetry.v2._proxy
The Telemetry Class
-------------------
The telemetry high-level interface is available through the ``telemetry``
member of a :class:`~openstack.connection.Connection` object. The
``telemetry`` member will only be added if the service is detected.
Sample Operations
^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.telemetry.v2._proxy.Proxy
.. automethod:: openstack.telemetry.v2._proxy.Proxy.find_sample
.. automethod:: openstack.telemetry.v2._proxy.Proxy.samples
Statistic Operations
^^^^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.telemetry.v2._proxy.Proxy
.. automethod:: openstack.telemetry.v2._proxy.Proxy.find_statistics
.. automethod:: openstack.telemetry.v2._proxy.Proxy.statistics
Resource Operations
^^^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.telemetry.v2._proxy.Proxy
.. automethod:: openstack.telemetry.v2._proxy.Proxy.get_resource
.. automethod:: openstack.telemetry.v2._proxy.Proxy.find_resource
.. automethod:: openstack.telemetry.v2._proxy.Proxy.resources
Meter Operations
^^^^^^^^^^^^^^^^
.. autoclass:: openstack.telemetry.v2._proxy.Proxy
.. automethod:: openstack.telemetry.v2._proxy.Proxy.find_meter
.. automethod:: openstack.telemetry.v2._proxy.Proxy.meters
Capability Operations
^^^^^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.telemetry.v2._proxy.Proxy
.. automethod:: openstack.telemetry.v2._proxy.Proxy.find_capability
.. automethod:: openstack.telemetry.v2._proxy.Proxy.capabilities
The Alarm Class
---------------
The alarm high-level interface is available through the ``telemetry.alarm``
member of a :class:`~openstack.connection.Connection` object. The
``telemetry.alarm`` member will only be added if the service is detected.
Alarm Operations
^^^^^^^^^^^^^^^^
.. autoclass:: openstack.telemetry.alarm.v2._proxy.Proxy
.. automethod:: openstack.telemetry.alarm.v2._proxy.Proxy.create_alarm
.. automethod:: openstack.telemetry.alarm.v2._proxy.Proxy.update_alarm
.. automethod:: openstack.telemetry.alarm.v2._proxy.Proxy.delete_alarm
.. automethod:: openstack.telemetry.alarm.v2._proxy.Proxy.get_alarm
.. automethod:: openstack.telemetry.alarm.v2._proxy.Proxy.find_alarm
.. automethod:: openstack.telemetry.alarm.v2._proxy.Proxy.alarms
Alarm Change Operations
^^^^^^^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.telemetry.alarm.v2._proxy.Proxy
.. automethod:: openstack.telemetry.alarm.v2._proxy.Proxy.find_alarm_change
.. automethod:: openstack.telemetry.alarm.v2._proxy.Proxy.alarm_changes

View File

@ -1,33 +0,0 @@
Workflow API
============
.. automodule:: openstack.workflow.v2._proxy
The Workflow Class
------------------
The workflow high-level interface is available through the ``workflow``
member of a :class:`~openstack.connection.Connection` object.
The ``workflow`` member will only be added if the service is detected.
Workflow Operations
^^^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.workflow.v2._proxy.Proxy
.. automethod:: openstack.workflow.v2._proxy.Proxy.create_workflow
.. automethod:: openstack.workflow.v2._proxy.Proxy.delete_workflow
.. automethod:: openstack.workflow.v2._proxy.Proxy.get_workflow
.. automethod:: openstack.workflow.v2._proxy.Proxy.find_workflow
.. automethod:: openstack.workflow.v2._proxy.Proxy.workflows
Execution Operations
^^^^^^^^^^^^^^^^^^^^
.. autoclass:: openstack.workflow.v2._proxy.Proxy
.. automethod:: openstack.workflow.v2._proxy.Proxy.create_execution
.. automethod:: openstack.workflow.v2._proxy.Proxy.delete_execution
.. automethod:: openstack.workflow.v2._proxy.Proxy.get_execution
.. automethod:: openstack.workflow.v2._proxy.Proxy.find_execution
.. automethod:: openstack.workflow.v2._proxy.Proxy.executions

View File

@ -1,39 +0,0 @@
**NOTE: This module is being phased out in favor of**
:mod:`openstack.resource2`. **Once all services have been moved over to use
resource2, that module will take this `resource` name.**
Resource
========
.. automodule:: openstack.resource
The prop class
--------------
.. autoclass:: openstack.resource.prop
:members:
The Resource class
------------------
.. autoclass:: openstack.resource.Resource
:members:
:member-order: bysource
How path_args are used
**********************
As :class:`Resource`\s often contain compound :data:`Resource.base_path`\s,
meaning the path is constructed from more than just that string, the
various request methods need a way to fill in the missing parts.
That's where ``path_args`` come in.
For example::
class ServerIP(resource.Resource):
base_path = "/servers/%(server_id)s/ips"
Making a GET request to obtain server IPs requires the ID of the server
to check. This is handled by passing ``{"server_id": "12345"}`` as the
``path_args`` argument when calling :meth:`Resource.get_by_id`. From there,
the method uses Python's string interpolation to fill in the ``server_id``
piece of the URL, and then makes the request.

View File

@ -1,26 +0,0 @@
**Note: This class is in the process of being applied as the new base class
for resources around the OpenStack SDK. Once that has been completed,
this module will be drop the 2 suffix and be the only resource module.**
Resource
========
.. automodule:: openstack.resource2
Components
----------
.. autoclass:: openstack.resource2.Body
:members:
.. autoclass:: openstack.resource2.Header
:members:
.. autoclass:: openstack.resource2.URI
:members:
The Resource class
------------------
.. autoclass:: openstack.resource2.Resource
:members:
:member-order: bysource

View File

@ -1,11 +0,0 @@
Bare Metal Resources
=====================
.. toctree::
:maxdepth: 1
v1/driver
v1/chassis
v1/node
v1/port
v1/port_group

View File

@ -1,12 +0,0 @@
openstack.bare_metal.v1.chassis
===============================
.. automodule:: openstack.bare_metal.v1.chassis
The Chassis Class
-----------------
The ``Chassis`` class inherits from :class:`~openstack.resource.Resource`.
.. autoclass:: openstack.bare_metal.v1.chassis.Chassis
:members:

View File

@ -1,12 +0,0 @@
openstack.bare_metal.v1.driver
==============================
.. automodule:: openstack.bare_metal.v1.driver
The Driver Class
----------------
The ``Driver`` class inherits from :class:`~openstack.resource.Resource`.
.. autoclass:: openstack.bare_metal.v1.driver.Driver
:members:

View File

@ -1,12 +0,0 @@
openstack.bare_metal.v1.Node
============================
.. automodule:: openstack.bare_metal.v1.node
The Node Class
--------------
The ``Node`` class inherits from :class:`~openstack.resource.Resource`.
.. autoclass:: openstack.bare_metal.v1.node.Node
:members:

View File

@ -1,12 +0,0 @@
openstack.bare_metal.v1.port
============================
.. automodule:: openstack.bare_metal.v1.port
The Port Class
--------------
The ``Port`` class inherits from :class:`~openstack.resource.Resource`.
.. autoclass:: openstack.bare_metal.v1.port.Port
:members:

View File

@ -1,12 +0,0 @@
openstack.bare_metal.v1.port_group
==================================
.. automodule:: openstack.bare_metal.v1.port_group
The PortGroup Class
-------------------
The ``PortGroup`` class inherits from :class:`~openstack.resource.Resource`.
.. autoclass:: openstack.bare_metal.v1.port_group.PortGroup
:members:

View File

@ -1,9 +0,0 @@
Block Store Resources
=====================
.. toctree::
:maxdepth: 1
v2/snapshot
v2/type
v2/volume

View File

@ -1,21 +0,0 @@
openstack.block_store.v2.snapshot
=================================
.. automodule:: openstack.block_store.v2.snapshot
The Snapshot Class
------------------
The ``Snapshot`` class inherits from :class:`~openstack.resource.Resource`.
.. autoclass:: openstack.block_store.v2.snapshot.Snapshot
:members:
The SnapshotDetail Class
------------------------
The ``SnapshotDetail`` class inherits from
:class:`~openstack.block_store.v2.snapshot.Snapshot`.
.. autoclass:: openstack.block_store.v2.snapshot.SnapshotDetail
:members:

View File

@ -1,13 +0,0 @@
openstack.block_store.v2.type
=============================
.. automodule:: openstack.block_store.v2.type
The Type Class
--------------
The ``Type`` class inherits from :class:`~openstack.resource.Resource`.
.. autoclass:: openstack.block_store.v2.type.Type
:members:

View File

@ -1,21 +0,0 @@
openstack.block_store.v2.volume
===============================
.. automodule:: openstack.block_store.v2.volume
The Volume Class
----------------
The ``Volume`` class inherits from :class:`~openstack.resource.Resource`.
.. autoclass:: openstack.block_store.v2.volume.Volume
:members:
The VolumeDetail Class
----------------------
The ``VolumeDetail`` class inherits from
:class:`~openstack.block_store.v2.volume.Volume`.
.. autoclass:: openstack.block_store.v2.volume.VolumeDetail
:members:

View File

@ -1,17 +0,0 @@
Cluster Resources
=================
.. toctree::
:maxdepth: 1
v1/build_info
v1/profile_type
v1/profile
v1/policy_type
v1/policy
v1/cluster
v1/node
v1/cluster_policy
v1/receiver
v1/action
v1/event

View File

@ -1,12 +0,0 @@
openstack.cluster.v1.action
===========================
.. automodule:: openstack.cluster.v1.action
The Action Class
----------------
The ``Action`` class inherits from :class:`~openstack.resource.Resource`.
.. autoclass:: openstack.cluster.v1.action.Action
:members:

View File

@ -1,12 +0,0 @@
openstack.cluster.v1.build_info
===============================
.. automodule:: openstack.cluster.v1.build_info
The BuildInfo Class
-------------------
The ``BuildInfo`` class inherits from :class:`~openstack.resource.Resource`.
.. autoclass:: openstack.cluster.v1.build_info.BuildInfo
:members:

View File

@ -1,12 +0,0 @@
openstack.cluster.v1.Cluster
============================
.. automodule:: openstack.cluster.v1.cluster
The Cluster Class
-----------------
The ``Cluster`` class inherits from :class:`~openstack.resource.Resource`.
.. autoclass:: openstack.cluster.v1.cluster.Cluster
:members:

View File

@ -1,13 +0,0 @@
openstack.cluster.v1.cluster_policy
===================================
.. automodule:: openstack.cluster.v1.cluster_policy
The ClusterPolicy Class
-----------------------
The ``ClusterPolicy`` class inherits from
:class:`~openstack.resource.Resource`.
.. autoclass:: openstack.cluster.v1.cluster_policy.ClusterPolicy
:members:

View File

@ -1,12 +0,0 @@
openstack.cluster.v1.event
==========================
.. automodule:: openstack.cluster.v1.event
The Event Class
---------------
The ``Event`` class inherits from :class:`~openstack.resource.Resource`.
.. autoclass:: openstack.cluster.v1.event.Event
:members:

View File

@ -1,12 +0,0 @@
openstack.cluster.v1.Node
=========================
.. automodule:: openstack.cluster.v1.node
The Node Class
--------------
The ``Node`` class inherits from :class:`~openstack.resource.Resource`.
.. autoclass:: openstack.cluster.v1.node.Node
:members:

View File

@ -1,12 +0,0 @@
openstack.cluster.v1.policy
===========================
.. automodule:: openstack.cluster.v1.policy
The Policy Class
----------------
The ``Policy`` class inherits from :class:`~openstack.resource.Resource`.
.. autoclass:: openstack.cluster.v1.policy.Policy
:members:

View File

@ -1,12 +0,0 @@
openstack.cluster.v1.policy_type
================================
.. automodule:: openstack.cluster.v1.policy_type
The PolicyType Class
--------------------
The ``PolicyType`` class inherits from :class:`~openstack.resource.Resource`.
.. autoclass:: openstack.cluster.v1.policy_type.PolicyType
:members:

View File

@ -1,12 +0,0 @@
openstack.cluster.v1.profile
============================
.. automodule:: openstack.cluster.v1.profile
The Profile Class
-----------------
The ``Profile`` class inherits from :class:`~openstack.resource.Resource`.
.. autoclass:: openstack.cluster.v1.profile.Profile
:members:

View File

@ -1,12 +0,0 @@
openstack.cluster.v1.profile_type
=================================
.. automodule:: openstack.cluster.v1.profile_type
The ProfileType Class
---------------------
The ``ProfileType`` class inherits from :class:`~openstack.resource.Resource`.
.. autoclass:: openstack.cluster.v1.profile_type.ProfileType
:members:

Some files were not shown because too many files have changed in this diff Show More