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:
parent
52583776f3
commit
2405c0e8cc
@ -1,7 +0,0 @@
|
||||
[run]
|
||||
branch = True
|
||||
source = openstack
|
||||
omit = openstack/tests/*
|
||||
|
||||
[report]
|
||||
ignore_errors = True
|
54
.gitignore
vendored
54
.gitignore
vendored
@ -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
|
@ -1,4 +0,0 @@
|
||||
[gerrit]
|
||||
host=review.openstack.org
|
||||
port=29418
|
||||
project=openstack/python-openstacksdk.git
|
3
.mailmap
3
.mailmap
@ -1,3 +0,0 @@
|
||||
# Format is:
|
||||
# <preferred e-mail> <other e-mail 1>
|
||||
# <preferred e-mail> <other e-mail 2>
|
@ -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=([^\.]+\.)+
|
@ -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
|
@ -1,4 +0,0 @@
|
||||
python-openstacksdk Style Commandments
|
||||
======================================
|
||||
|
||||
Read the OpenStack Style Commandments https://docs.openstack.org/hacking/latest/
|
175
LICENSE
175
LICENSE
@ -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.
|
@ -1,6 +0,0 @@
|
||||
include AUTHORS
|
||||
include ChangeLog
|
||||
exclude .gitignore
|
||||
exclude .gitreview
|
||||
|
||||
global-exclude *.pyc
|
14
README
Normal file
14
README
Normal 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.
|
36
README.rst
36
README.rst
@ -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
|
@ -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
|
136
doc/Makefile
136
doc/Makefile
@ -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."
|
@ -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"
|
@ -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
|
@ -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)
|
@ -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)
|
@ -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.
|
@ -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
|
@ -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.
|
@ -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
|
@ -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
|
@ -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``.
|
@ -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 :)
|
@ -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)
|
@ -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.
|
@ -1 +0,0 @@
|
||||
.. include:: ../../ChangeLog
|
@ -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>
|
@ -1,13 +0,0 @@
|
||||
Connection
|
||||
==========
|
||||
.. automodule:: openstack.connection
|
||||
|
||||
from_config
|
||||
-----------
|
||||
.. autofunction:: openstack.connection.from_config
|
||||
|
||||
Connection Object
|
||||
-----------------
|
||||
|
||||
.. autoclass:: openstack.connection.Connection
|
||||
:members:
|
@ -1 +0,0 @@
|
||||
../../../examples/
|
@ -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
|
@ -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
|
@ -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>
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
||||
`public–key 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
|
||||
.. _public–key cryptography: https://en.wikipedia.org/wiki/Public-key_cryptography
|
@ -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.
|
@ -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.
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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)
|
@ -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
|
@ -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
|
@ -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'}
|
@ -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
|
@ -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
|
@ -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
|
@ -1,9 +0,0 @@
|
||||
Profile
|
||||
=======
|
||||
.. automodule:: openstack.profile
|
||||
|
||||
Profile Object
|
||||
--------------
|
||||
|
||||
.. autoclass:: openstack.profile.Profile
|
||||
:members:
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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.
|
@ -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
|
@ -1,11 +0,0 @@
|
||||
Bare Metal Resources
|
||||
=====================
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
v1/driver
|
||||
v1/chassis
|
||||
v1/node
|
||||
v1/port
|
||||
v1/port_group
|
@ -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:
|
@ -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:
|
@ -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:
|
@ -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:
|
@ -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:
|
@ -1,9 +0,0 @@
|
||||
Block Store Resources
|
||||
=====================
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
v2/snapshot
|
||||
v2/type
|
||||
v2/volume
|
@ -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:
|
@ -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:
|
||||
|
@ -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:
|
@ -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
|
@ -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:
|
@ -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:
|
@ -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:
|
@ -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:
|
@ -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:
|
@ -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:
|
@ -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:
|
@ -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:
|
@ -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:
|
@ -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
Loading…
Reference in New Issue
Block a user