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: Ib784ade7594933fc9e09461d2a294521e6224f72
This commit is contained in:
Tony Breeds 2017-09-12 15:37:54 -06:00
parent accd70a656
commit 18dba242d1
828 changed files with 14 additions and 95379 deletions

View File

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

56
.gitignore vendored
View File

@ -1,56 +0,0 @@
# Python related files
*.dat
*.egg
*.egg-info
*.pyc
.eggs
TAGS
build
# Test related files
*.log
.coverage
.coverage.*
.testrepository/*
.tox
.venv
cover
flake8_results.html
functionaltests/.testrepository/
functionaltests/tempest.log
htmlcov/
venv
# Files created by releasenotes build
releasenotes/build
# Editors
*.sublime-workspace
*.swp
# Misc
*.DS_Store
*.idea
*.ipynb
*.orig
*.sqlite
*.sqlite3
/.ipynb_checkpoints/*
/bind9
/dnsmasq
AUTHORS
ChangeLog
contrib/vagrant/.vagrant/
designate/versioninfo
dist
doc/build/*
doc/source/api/*
api-ref/build/*
etc/designate/*.conf
etc/designate/*.yaml
var/*

View File

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

View File

@ -1,10 +0,0 @@
[DEFAULT]
test_command=OS_STDOUT_CAPTURE=${OS_STDOUT_CAPTURE:-1} \
OS_STDERR_CAPTURE=${OS_STDERR_CAPTURE:-1} \
OS_LOG_CAPTURE=${OS_LOG_CAPTURE:-1} \
OS_DEBUG=${OS_DEBUG:-1} \
OS_TEST_TIMEOUT=${OS_TEST_TIMEOUT:-160} \
${PYTHON:-python} -m subunit.run discover -t ./ ${OS_TEST_PATH:-./designate/tests} $LISTOPT $IDOPTION
test_id_option=--load-list $IDFILE
test_list_option=--list

176
LICENSE
View File

@ -1,176 +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.

14
README Normal file
View File

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

View File

@ -1,96 +0,0 @@
========================
Team and repository tags
========================
.. image:: https://governance.openstack.org/badges/designate.svg
:target: https://governance.openstack.org/reference/tags/index.html
.. Change things from this point on
===================
OpenStack Designate
===================
Designate is an OpenStack project, providing DNSaaS.
IRC: #openstack-dns
Installation: https://docs.openstack.org/designate/latest/
Development
===========
Designate follows the `OpenStack Gerrit Workflow`_
Setup
-----
Setup a working environment:
.. code-block:: shell
git clone https://github.com/openstack/designate.git
cd designate
virtualenv .venv
. .venv/bin/activate
pip install -r requirements.txt -r test-requirements.txt
python setup.py develop
Building Docs
-------------
To build the documentation from the restructured text source, do the following:
.. code-block:: shell
cd doc
pip install -r requirements.txt
sphinx-build source/ build/html/
now point your browser at html/index.html
(the official documentation is published to `docs.openstack.org`_ by the
maintainers.
Contributing
------------
Install the git-review package to make life easier
.. code-block:: shell
pip install git-review
Branch, work, & submit:
.. code-block:: shell
# cut a new branch, tracking master
git checkout --track -b bug/id origin/master
# work work work
git add stuff
git commit
# rebase/squash to a single commit before submitting
git rebase -i
# submit
git-review
Testing
-------
Execute a single test using py27 (test is CentralServiceTest.test_count_domains)
.. code-block:: shell
tox -e py27 -- designate.tests.test_central.test_service.CentralServiceTest.test_count_zones_policy_check
* Free software: Apache license
* Documentation: https://docs.openstack.org/designate/latest/
* Source: https://git.openstack.org/cgit/openstack/designate
* Bugs: https://bugs.launchpad.net/designate
.. _OpenStack Gerrit Workflow: https://docs.openstack.org/infra/manual/developers.html#development-workflow
.. _docs.openstack.org: https://docs.openstack.org/designate/latest/

View File

@ -1,232 +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.
#
# ironic documentation build configuration file, created by
# sphinx-quickstart on Sat May 1 15:17:47 2010.
#
# This file is execfile()d with the current directory set to
# its containing dir.
#
# Note that not all possible configuration values are present in this
# autogenerated file.
#
# All configuration values have a default; values that are commented out
# serve to show the default.
import os
import subprocess
import sys
from designate.version import version_info
import openstackdocstheme
html_theme = 'openstackdocs'
html_theme_path = [openstackdocstheme.get_html_theme_path()]
html_theme_options = {
"sidebar_mode": "toc",
"sidebar_dropdown": "api_ref",
}
extensions = [
'os_api_ref',
]
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
sys.path.insert(0, os.path.abspath('../../'))
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.
# The suffix of source filenames.
source_suffix = '.rst'
# The encoding of source files.
#
# source_encoding = 'utf-8'
# The master toctree document.
master_doc = 'index'
# General information about the project.
project = u'Designate API Reference'
copyright = u'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.
#
# The full version, including alpha/beta/rc tags.
release = version_info.release_string()
# The short X.Y version.
version = version_info.version_string()
# Config logABug feature
giturl = (
u'https://git.openstack.org/cgit/openstack/designate/tree/api-ref/source')
# source tree
# html_context allows us to pass arbitrary values into the html template
html_context = {'bug_tag': 'api-ref',
'giturl': giturl,
'bug_project': 'designate'}
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
#
# language = None
# There are two options for replacing |today|: either, you set today to some
# non-false value, then it is used:
# today = ''
# Else, today_fmt is used as the format for a strftime call.
# today_fmt = '%B %d, %Y'
# The reST default role (used for this markup: `text`) to use
# for all documents.
# default_role = None
# 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 = False
# If true, sectionauthor and moduleauthor directives will be shown in the
# output. They are ignored by default.
show_authors = False
# The name of the Pygments (syntax highlighting) style to use.
pygments_style = 'sphinx'
# -- Options for man page output ----------------------------------------------
# Grouping the document tree for man pages.
# List of tuples 'sourcefile', 'target', u'title', u'Authors name', 'manual'
# -- Options for HTML output --------------------------------------------------
# The theme to use for HTML and HTML Help pages. Major themes that come with
# Sphinx are currently 'default' and 'sphinxdoc'.
# html_theme_path = ["."]
# html_theme = '_theme'
# Theme options are theme-specific and customize the look and feel of a theme
# further. For a list of options available for each theme, see the
# documentation.
# html_theme_options = {}
# Add any paths that contain custom themes here, relative to this directory.
# html_theme_path = []
# The name for this set of Sphinx documents. If None, it defaults to
# "<project> v<release> documentation".
# html_title = None
# A shorter title for the navigation bar. Default is the same as html_title.
# html_short_title = None
# The name of an image file (relative to this directory) to place at the top
# of the sidebar.
# html_logo = None
# The name of an image file (within the static path) to use as favicon of the
# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
# pixels large.
# html_favicon = None
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
# html_static_path = ['_static']
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
# using the given strftime format.
# html_last_updated_fmt = '%b %d, %Y'
git_cmd = ["git", "log", "--pretty=format:'%ad, commit %h'", "--date=local",
"-n1"]
html_last_updated_fmt = subprocess.check_output(git_cmd).decode('utf-8')
# If true, SmartyPants will be used to convert quotes and dashes to
# typographically correct entities.
# html_use_smartypants = True
# Custom sidebar templates, maps document names to template names.
# html_sidebars = {}
# Additional templates that should be rendered to pages, maps page names to
# template names.
# html_additional_pages = {}
# If false, no module index is generated.
# html_use_modindex = True
# If false, no index is generated.
# html_use_index = True
# If true, the index is split into individual pages for each letter.
# html_split_index = False
# If true, links to the reST sources are added to the pages.
# html_show_sourcelink = True
# If true, an OpenSearch description file will be output, and all pages will
# contain a <link> tag referring to it. The value of this option must be the
# base URL from which the finished HTML is served.
# html_use_opensearch = ''
# If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml").
# html_file_suffix = ''
# Output file base name for HTML help builder.
htmlhelp_basename = 'designatedoc'
# -- Options for LaTeX output -------------------------------------------------
# The paper size ('letter' or 'a4').
# latex_paper_size = 'letter'
# The font size ('10pt', '11pt' or '12pt').
# latex_font_size = '10pt'
# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title, author, documentclass
# [howto/manual]).
latex_documents = [
('index', 'Designate.tex', u'OpenStack DNS API Documentation',
u'OpenStack Foundation', 'manual'),
]
# The name of an image file (relative to this directory) to place at the top of
# the title page.
# latex_logo = None
# For "manual" documents, if this is true, then toplevel headings are parts,
# not chapters.
# latex_use_parts = False
# Additional stuff for the LaTeX preamble.
# latex_preamble = ''
# Documents to append as an appendix to all manuals.
# latex_appendices = []
# If false, no module index is generated.
# latex_use_modindex = True

View File

@ -1,241 +0,0 @@
==========
Blacklists
==========
The blacklist entries are used to manage blacklisted zones. If a zone
is blacklisted, then it cannot be used to create a zone. By default,
only an admin can manage these entries. Blacklisted zones are stored
as a regular expression (regex) pattern in the Database/Storage in
the blacklists table.
Create Blacklist
================
.. rest_method:: POST /v2/blacklists
Create a Blacklist
Normal response codes: 201
Error response codes: 409, 405,404,403,401,400,503
Request Parameters
------------------
.. rest_parameters:: parameters.yaml
- x-auth-token: x-auth-token
- x-auth-all-projects: x-auth-all-projects
- x-auth-sudo-project-id: x-auth-sudo-project-id
- pattern: blacklist_pattern
- description: blacklist_description
Request Example
---------------
.. literalinclude:: samples/blacklists/create-blacklist-request.json
:language: javascript
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- x-openstack-request-id: x-openstack-request-id
- id: id
- pattern: blacklist_pattern
- description: blacklist_description
- created_at: created_at
- updated_at: updated_at
- links: links
Response Example
----------------
.. literalinclude:: samples/blacklists/blacklist-response.json
:language: javascript
List Blacklists
---------------
.. rest_method:: GET /v2/blacklists
List all blacklists
Normal response codes: 200
Error response codes: 405,404,403,401,400,503
Request Parameters
------------------
.. rest_parameters:: parameters.yaml
- x-auth-token: x-auth-token
- x-auth-all-projects: x-auth-all-projects
- x-auth-sudo-project-id: x-auth-sudo-project-id
- pattern: blacklist_pattern_filter
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- x-openstack-request-id: x-openstack-request-id
- id: id
- pattern: blacklist_pattern
- description: blacklist_description
- created_at: created_at
- updated_at: updated_at
- links: links
Response Example
----------------
.. literalinclude:: samples/blacklists/list-blacklists-response.json
:language: javascript
Show Blacklist
==============
.. rest_method:: GET /v2/blacklists/{blacklist_id}
Show a blacklist
Normal response codes: 200
Error response codes: 405,404,403,401,400,503
Request
-------
.. rest_parameters:: parameters.yaml
- x-auth-token: x-auth-token
- x-auth-all-projects: x-auth-all-projects
- x-auth-sudo-project-id: x-auth-sudo-project-id
- blacklist_id: blacklist_id
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- x-openstack-request-id: x-openstack-request-id
- id: id
- pattern: blacklist_pattern
- description: blacklist_description
- created_at: created_at
- updated_at: updated_at
- links: links
Response Example
----------------
.. literalinclude:: samples/blacklists/blacklist-response.json
:language: javascript
Update Blacklist
================
.. rest_method:: PATCH /v2/blacklists/{blacklist_id}
Update a Blacklist
Normal response codes: 200
Error response codes: 405,404,403,401,400,503
Request Parameters
------------------
.. rest_parameters:: parameters.yaml
- x-auth-token: x-auth-token
- x-auth-all-projects: x-auth-all-projects
- x-auth-sudo-project-id: x-auth-sudo-project-id
- pattern: blacklist_pattern
- description: blacklist_description
- blacklist_id: blacklist_id
Request Example
---------------
.. literalinclude:: samples/blacklists/update-blacklist-request.json
:language: javascript
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- x-openstack-request-id: x-openstack-request-id
- id: id
- pattern: blacklist_pattern
- description: blacklist_description
- created_at: created_at
- updated_at: updated_at
- links: links
Response Example
----------------
.. literalinclude:: samples/blacklists/update-blacklist-response.json
:language: javascript
Delete a Blacklist
==================
.. rest_method:: DELETE /v2/blacklists/{blacklist_id}
Delete a blacklist
Normal response codes: 204
Error response codes: 405,404,403,401,400,503
Request
-------
.. rest_parameters:: parameters.yaml
- x-auth-token: x-auth-token
- x-auth-all-projects: x-auth-all-projects
- x-auth-sudo-project-id: x-auth-sudo-project-id
- blacklist_id: blacklist_id
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- x-openstack-request-id: x-openstack-request-id

View File

@ -1,54 +0,0 @@
======
Limits
======
Show the limits for the current project
Get Project Limits
==================
.. rest_method:: GET /v2/limits
List project limits
Normal response codes: 200
Error response codes: 405,404,403,401,400,503
Request
-------
.. rest_parameters:: parameters.yaml
- x-auth-token: x-auth-token
- x-auth-all-projects: x-auth-all-projects
- x-auth-sudo-project-id: x-auth-sudo-project-id
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- x-openstack-request-id: x-openstack-request-id
- max_page_limit: max_page_limit
- max_recordset_name_length: max_recordset_name_length
- max_recordset_records: max_recordset_records
- max_zone_name_length: max_zone_name_length
- max_zone_records: max_zone_records
- max_zone_recordsets: max_zone_recordsets
- max_zones: max_zones
- min_ttl: min_ttl
Response Example
----------------
.. literalinclude:: samples/limits/get-limits-response.json
:language: javascript

View File

@ -1,104 +0,0 @@
=====
Pools
=====
Get information about the pools in a designate install
List all Pools
==============
.. rest_method:: GET /v2/pools
Get the list of Pools.
Normal response codes: 200
Error response codes: 405,404,403,401,400,503
Request
-------
.. rest_parameters:: parameters.yaml
- x-auth-token: x-auth-token
- x-auth-all-projects: x-auth-all-projects
- x-auth-sudo-project-id: x-auth-sudo-project-id
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- x-openstack-request-id: x-openstack-request-id
- description: description
- id: pool_id
- attributes: pool_attributes
- project_id: project_id
- ns_records: pool_ns_records
- name: pool_name
- created_at: created_at
- updated_at: updated_at
- links: links
- metadata: metadata
Response Example
----------------
.. literalinclude:: samples/pools/list-pools-response.json
:language: javascript
Show a Pool
===========
.. rest_method:: GET /v2/pools/{pool_id}
Get a specific Pool
Normal response codes: 200
Error response codes: 405,404,403,401,400,503
Request
-------
.. rest_parameters:: parameters.yaml
- x-auth-token: x-auth-token
- x-auth-all-projects: x-auth-all-projects
- x-auth-sudo-project-id: x-auth-sudo-project-id
- pool_id: path_pool_id
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- x-openstack-request-id: x-openstack-request-id
- description: description
- id: pool_id
- attributes: pool_attributes
- project_id: project_id
- ns_records: pool_ns_records
- name: pool_name
- created_at: created_at
- updated_at: updated_at
- links: links
- metadata: metadata
Response Example
----------------
.. literalinclude:: samples/pools/show-pool-response.json
:language: javascript

View File

@ -1,196 +0,0 @@
======
Quotas
======
Quota operations.
View Quotas
===========
.. rest_method:: GET /v2/quotas/{project_id}
View a projects quotas
This returns a key:value set of quotas on the system.
.. note::
If a user is viewing another projects quotas, they will need to set
``x-auth-all-projects`` to ``True``
They will need a role with the ``All-Projects`` permission to do this.
Normal response codes: 200
Error response codes: 409,405,404,403,401,400,503
Request
-------
.. rest_parameters:: parameters.yaml
- x-auth-token: x-auth-token
- x-auth-all-projects: x-auth-all-projects
- x-auth-sudo-project-id: x-auth-sudo-project-id
- project_id: path_project_id
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- x-openstack-request-id: x-openstack-request-id
Response Example
----------------
.. literalinclude:: samples/quotas/get-quotas-response.json
:language: javascript
View Current Project's Quotas
=============================
.. rest_method:: GET /v2/quotas/
View the quotas for the current project
This returns a key:value set of quotas on the system.
Normal response codes: 200
Error response codes: 409,405,404,403,401,400,503
Request
-------
.. rest_parameters:: parameters.yaml
- x-auth-token: x-auth-token
- x-auth-all-projects: x-auth-all-projects
- x-auth-sudo-project-id: x-auth-sudo-project-id
- project_id: path_project_id
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- x-openstack-request-id: x-openstack-request-id
Response Example
----------------
.. literalinclude:: samples/quotas/get-quotas-response.json
:language: javascript
Set Quotas
==========
.. rest_method:: PATCH /v2/quotas/{project_id}
Set a projects quotas
The request should be a key:value set of quotas to be set
This returns a key:value set of quotas on the system.
.. note::
If a user is updating another projects quotas, they will need to set
``x-auth-all-projects`` to ``True``
They will need a role with the "All-Projects" and "set-quotas"
permission to do this.
Normal response codes: 200
Error response codes: 409,405,404,403,401,400,503
Request Example
---------------
.. literalinclude:: samples/quotas/set-quotas-request.json
:language: javascript
Request
-------
.. rest_parameters:: parameters.yaml
- x-auth-token: x-auth-token
- x-auth-all-projects: x-auth-all-projects
- x-auth-sudo-project-id: x-auth-sudo-project-id
- project_id: path_project_id
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- x-openstack-request-id: x-openstack-request-id
Response Example
----------------
.. literalinclude:: samples/quotas/set-quotas-response.json
:language: javascript
Reset Quotas
============
.. rest_method:: DELETE /v2/quotas/{project_id}
Reset all quotas for a project to default
.. note::
If a user is resetting another projects quotas, they will need to set
``x-auth-all-projects`` to ``True``
They will need a role with the ``All-Projects`` and "set-quotas"
permission to do this.
Normal response codes: 204
Error response codes: 409,405,404,403,401,400,503
Request
-------
.. rest_parameters:: parameters.yaml
- x-auth-token: x-auth-token
- x-auth-all-projects: x-auth-all-projects
- x-auth-sudo-project-id: x-auth-sudo-project-id
- project_id: path_project_id
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- x-openstack-request-id: x-openstack-request-id

View File

@ -1,627 +0,0 @@
==========
Recordsets
==========
Recordsets operations.
Create Recordset
================
.. rest_method:: POST /v2/zones/{zone_id}/recordsets
Create a recordset in a zone
Normal response codes: 202
Error response codes: 405,404,403,401,400,503
Request
-------
.. rest_parameters:: parameters.yaml
- x-auth-token: x-auth-token
- x-auth-all-projects: x-auth-all-projects
- x-auth-sudo-project-id: x-auth-sudo-project-id
- name: recordset_name
- zone_id: path_zone_id
- ttl: recordset_ttl
- description: recordset_description
- type: recordset_type
- records: recordset_records
Request Example
---------------
.. literalinclude:: samples/recordsets/create-recordset-request.json
:language: javascript
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- x-openstack-request-id: x-openstack-request-id
- id: id
- project_id: project_id
- name: recordset_name
- ttl: recordset_ttl
- status: status
- action: action
- zone_id: recordset_zone_id
- zone_name: recordset_zone_name
- description: recordset_description
- type: recordset_type
- version: version
- created_at: created_at
- updated_at: updated_at
- links: links
Response Example
----------------
.. literalinclude:: samples/recordsets/create-recordset-response.json
:language: javascript
List Recordsets in a Zone
=========================
.. rest_method:: GET /v2/zones/{zone_id}/recordsets
This lists all recordsets in a zone
Normal response codes: 200
Error response codes: 405,404,403,401,400,503
Request
-------
.. rest_parameters:: parameters.yaml
- x-auth-token: x-auth-token
- x-auth-all-projects: x-auth-all-projects
- x-auth-sudo-project-id: x-auth-sudo-project-id
- zone_id: path_zone_id
- limit: limit
- marker: marker
- sort_dir: sort_dir
- sort_key: sort_key
- name: recordset_name_filter
- type: recordset_type_filter
- ttl: recordset_ttl_filter
- data: recordset_data_filter
- status: recordset_status_filter
- description: recordset_description_filter
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- x-openstack-request-id: x-openstack-request-id
- id: id
- project_id: project_id
- name: recordset_name
- ttl: recordset_ttl
- status: status
- action: action
- zone_id: recordset_zone_id
- zone_name: recordset_zone_name
- description: recordset_description
- type: recordset_type
- version: version
- created_at: created_at
- updated_at: updated_at
- links: links
- metadata: metadata
Response Example
----------------
.. literalinclude:: samples/recordsets/list-recordset-in-zone-response.json
:language: javascript
List all Recordsets owned by project
====================================
.. rest_method:: GET /v2/recordsets
This lists all recordsets owned by a project in Designate
Normal response codes: 200
Error response codes: 405,404,403,401,400,503
Request
-------
.. rest_parameters:: parameters.yaml
- x-auth-token: x-auth-token
- x-auth-all-projects: x-auth-all-projects
- x-auth-sudo-project-id: x-auth-sudo-project-id
- zone_id: path_zone_id
- limit: limit
- marker: marker
- sort_dir: sort_dir
- sort_key: sort_key
- name: recordset_name_filter
- type: recordset_type_filter
- ttl: recordset_ttl_filter
- data: recordset_data_filter
- status: recordset_status_filter
- description: recordset_description_filter
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- x-openstack-request-id: x-openstack-request-id
- id: id
- project_id: project_id
- name: recordset_name
- ttl: recordset_ttl
- status: status
- action: action
- zone_id: recordset_zone_id
- zone_name: recordset_zone_name
- description: recordset_description
- type: recordset_type
- version: version
- created_at: created_at
- updated_at: updated_at
- links: links
- metadata: metadata
Response Example
----------------
.. literalinclude:: samples/recordsets/list-all-recordset-response.json
:language: javascript
Show a Recordset
================
.. rest_method:: GET /v2/zones/{zone_id}/recordsets/{recordset_id}
Show an single recordset
Normal response codes: 200
Error response codes: 405,404,403,401,400,503
Request
-------
.. rest_parameters:: parameters.yaml
- x-auth-token: x-auth-token
- x-auth-all-projects: x-auth-all-projects
- x-auth-sudo-project-id: x-auth-sudo-project-id
- zone_id: path_zone_id
- recordset_id: path_recordset_id
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- x-openstack-request-id: x-openstack-request-id
- id: id
- project_id: project_id
- name: recordset_name
- ttl: recordset_ttl
- status: status
- action: action
- zone_id: recordset_zone_id
- zone_name: recordset_zone_name
- description: recordset_description
- type: recordset_type
- version: version
- created_at: created_at
- updated_at: updated_at
- links: links
Response Example
----------------
.. literalinclude:: samples/recordsets/show-recordset-response.json
:language: javascript
Update a Recordset
==================
.. rest_method:: PUT /v2/zones/{zone_id}/recordsets/{recordset_id}
Update a recordset
Normal response codes: 202
Error response codes: 405,404,403,401,400,503
Request
-------
.. rest_parameters:: parameters.yaml
- x-auth-token: x-auth-token
- x-auth-all-projects: x-auth-all-projects
- x-auth-sudo-project-id: x-auth-sudo-project-id
- x-designate-edit-managed-records: x-designate-edit-managed-records
- zone_id: path_zone_id
- recordset_id: path_recordset_id
- ttl: recordset_ttl
- description: recordset_description
- records: recordset_records
Request Example
---------------
.. literalinclude:: samples/recordsets/update-recordset-request.json
:language: javascript
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- x-openstack-request-id: x-openstack-request-id
- id: id
- project_id: project_id
- name: recordset_name
- ttl: recordset_ttl
- status: status
- action: action
- zone_id: recordset_zone_id
- zone_name: recordset_zone_name
- description: recordset_description
- type: recordset_type
- version: version
- created_at: created_at
- updated_at: updated_at
- links: links
Response Example
----------------
.. literalinclude:: samples/recordsets/update-recordset-response.json
:language: javascript
Delete a Recordset
==================
.. rest_method:: DELETE /v2/zones/{zone_id}/recordsets/{recordset_id}
Delete a recordset
Normal response codes: 202
Error response codes: 405,404,403,401,400,503
Request
-------
.. rest_parameters:: parameters.yaml
- x-auth-token: x-auth-token
- x-auth-all-projects: x-auth-all-projects
- x-auth-sudo-project-id: x-auth-sudo-project-id
- x-designate-edit-managed-records: x-designate-edit-managed-records
- zone_id: path_zone_id
- recordset_id: path_recordset_id
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- x-openstack-request-id: x-openstack-request-id
- id: id
- project_id: project_id
- name: recordset_name
- ttl: recordset_ttl
- status: status
- action: action
- zone_id: recordset_zone_id
- zone_name: recordset_zone_name
- description: recordset_description
- type: recordset_type
- version: version
- created_at: created_at
- updated_at: updated_at
- links: links
Response Example
----------------
.. literalinclude:: samples/recordsets/update-recordset-response.json
:language: javascript
Create a MX Recordset
=====================
.. rest_method:: POST /v2/zones/{zone_id}/recordsets
Create a MX recordset in a zone
Normal response codes: 202
Error response codes: 405,404,403,401,400,503
Request
-------
.. rest_parameters:: parameters.yaml
- x-auth-token: x-auth-token
- x-auth-all-projects: x-auth-all-projects
- x-auth-sudo-project-id: x-auth-sudo-project-id
- x-designate-edit-managed-records: x-designate-edit-managed-records
- zone_id: path_zone_id
- name: recordset_name
- ttl: recordset_ttl
- description: recordset_description
- type: recordset_type
- records: recordset_records
Request Example
---------------
.. literalinclude:: samples/recordsets/create-mx-recordset-request.json
:language: javascript
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- x-openstack-request-id: x-openstack-request-id
- id: id
- project_id: project_id
- name: recordset_name
- ttl: recordset_ttl
- status: status
- action: action
- zone_id: recordset_zone_id
- zone_name: recordset_zone_name
- description: recordset_description
- type: recordset_type
- version: version
- created_at: created_at
- updated_at: updated_at
- links: links
Response Example
----------------
.. literalinclude:: samples/recordsets/create-mx-recordset-response.json
:language: javascript
Create a SSHFP Recordset
========================
.. rest_method:: POST /v2/zones/{zone_id}/recordsets
Create a MX recordset in a zone
Normal response codes: 202
Error response codes: 405,404,403,401,400,503
Request
-------
.. rest_parameters:: parameters.yaml
- x-auth-token: x-auth-token
- x-auth-all-projects: x-auth-all-projects
- x-auth-sudo-project-id: x-auth-sudo-project-id
- zone_id: path_zone_id
- name: recordset_name
- ttl: recordset_ttl
- description: recordset_description
- type: recordset_type
- records: recordset_records
Request Example
---------------
.. literalinclude:: samples/recordsets/create-sshfp-recordset-request.json
:language: javascript
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- x-openstack-request-id: x-openstack-request-id
- id: id
- project_id: project_id
- name: recordset_name
- ttl: recordset_ttl
- status: status
- action: action
- zone_id: recordset_zone_id
- zone_name: recordset_zone_name
- description: recordset_description
- type: recordset_type
- version: version
- created_at: created_at
- updated_at: updated_at
- links: links
Response Example
----------------
.. literalinclude:: samples/recordsets/create-sshfp-recordset-response.json
:language: javascript
Create a SPF Recordset
======================
.. rest_method:: POST /v2/zones/{zone_id}/recordsets
Create a MX recordset in a zone
Normal response codes: 202
Error response codes: 405,404,403,401,400,503
Request
-------
.. rest_parameters:: parameters.yaml
- x-auth-token: x-auth-token
- x-auth-all-projects: x-auth-all-projects
- x-auth-sudo-project-id: x-auth-sudo-project-id
- zone_id: path_zone_id
- name: recordset_name
- ttl: recordset_ttl
- description: recordset_description
- type: recordset_type
- records: recordset_records
Request Example
---------------
.. literalinclude:: samples/recordsets/create-spf-recordset-request.json
:language: javascript
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- x-openstack-request-id: x-openstack-request-id
- id: id
- project_id: project_id
- name: recordset_name
- ttl: recordset_ttl
- status: status
- action: action
- zone_id: recordset_zone_id
- zone_name: recordset_zone_name
- description: recordset_description
- type: recordset_type
- version: version
- created_at: created_at
- updated_at: updated_at
- links: links
Response Example
----------------
.. literalinclude:: samples/recordsets/create-spf-recordset-response.json
:language: javascript
Create a SRV Recordset
======================
.. rest_method:: POST /v2/zones/{zone_id}/recordsets
Create a MX recordset in a zone
Normal response codes: 202
Error response codes: 405,404,403,401,400,503
Request
-------
.. rest_parameters:: parameters.yaml
- x-auth-token: x-auth-token
- x-auth-all-projects: x-auth-all-projects
- x-auth-sudo-project-id: x-auth-sudo-project-id
- zone_id: path_zone_id
- name: recordset_name
- ttl: recordset_ttl
- description: recordset_description
- type: recordset_type
- records: recordset_records
Request Example
---------------
.. literalinclude:: samples/recordsets/create-srv-recordset-request.json
:language: javascript
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- x-openstack-request-id: x-openstack-request-id
- id: id
- project_id: project_id
- name: recordset_name
- ttl: recordset_ttl
- status: status
- action: action
- zone_id: recordset_zone_id
- zone_name: recordset_zone_name
- description: recordset_description
- type: recordset_type
- version: version
- created_at: created_at
- updated_at: updated_at
- links: links
Response Example
----------------
.. literalinclude:: samples/recordsets/create-srv-recordset-response.json
:language: javascript

View File

@ -1,192 +0,0 @@
===========
FloatingIPs
===========
In order to use the FloatingIPs functionality you will need to have a FloatingIP
associated to your project in Neutron.
Set FloatingIP's PTR record
============================
.. rest_method:: PATCH /v2/reverse/floatingips/{region}:{floatingip_id}
Set a PTR record for the given FloatingIP. The domain if it does not exist
will be provisioned automatically.
Normal response codes: 202
Error response codes: 405,404,403,401,400,503
Request
-------
.. rest_parameters:: parameters.yaml
- x-auth-token: x-auth-token
- x-auth-all-projects: x-auth-all-projects
- x-auth-sudo-project-id: x-auth-sudo-project-id
- ptrdname: fptrd_name
- description: fptr_description
- ttl: fptr_ttl
- region: region
- floatingip_id: floatingip_id
Request Example
---------------
.. literalinclude:: samples/reverse_floatingips/set-ptr-record-request.json
:language: javascript
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- x-openstack-request-id: x-openstack-request-id
- id: fptr_id
- ptrdname: fptrd_name
- description: fptr_description
- ttl: fptr_ttl
- address: floatingip_address
- status: status
- action: action
- links: links
Response Example
----------------
.. literalinclude:: samples/reverse_floatingips/ptr-record-response.json
:language: javascript
Show FloatingIP's PTR record
============================
.. rest_method:: GET /v2/reverse/floatingips/{region}:{floatingip_id}
Shows a particular FloatingIP PTR
Normal response codes: 200
Error response codes: 405,404,403,401,400,503
Request
-------
.. rest_parameters:: parameters.yaml
- x-auth-token: x-auth-token
- x-auth-all-projects: x-auth-all-projects
- x-auth-sudo-project-id: x-auth-sudo-project-id
- region: region
- floatingip_id: floatingip_id
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- x-openstack-request-id: x-openstack-request-id
- id: fptr_id
- ptrdname: fptrd_name
- description: fptr_description
- ttl: fptr_ttl
- address: floatingip_address
- status: status
- action: action
- links: links
Response Example
----------------
.. literalinclude:: samples/reverse_floatingips/ptr-record-response.json
:language: javascript
List FloatingIP's PTR record
============================
.. rest_method:: GET /v2/reverse/floatingips
List FloatingIP PTR records
Normal response codes: 200
Error response codes: 405,404,403,401,400,503
Request
-------
.. rest_parameters:: parameters.yaml
- x-auth-token: x-auth-token
- x-auth-all-projects: x-auth-all-projects
- x-auth-sudo-project-id: x-auth-sudo-project-id
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- x-openstack-request-id: x-openstack-request-id
- id: fptr_id
- ptrdname: fptrd_name
- description: fptr_description
- ttl: fptr_ttl
- address: floatingip_address
- status: status
- action: action
- links: links
Response Example
----------------
.. literalinclude:: samples/reverse_floatingips/list-ptr-record-response.json
:language: javascript
Unset FloatingIP's PTR record
=============================
.. rest_method:: PATCH /v2/reverse/floatingips/{region}:{floatingip_id}
Unset the PTR record for a FloatingIP
Normal response codes: 202
Error response codes: 405,404,403,401,400,503
Request
-------
.. rest_parameters:: parameters.yaml
- x-auth-token: x-auth-token
- x-auth-all-projects: x-auth-all-projects
- x-auth-sudo-project-id: x-auth-sudo-project-id
- region: region
- floatingip_id: floatingip_id
Request Example
---------------
.. literalinclude:: samples/reverse_floatingips/unset-ptr-record-request.json
:language: javascript
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- x-openstack-request-id: x-openstack-request-id

View File

@ -1,54 +0,0 @@
================
Service Statuses
================
The Service Status entries are used to track the health state of the services
in the Designate system. Each service will report in it's health via RPC or
using HTTP.
List Statuses
=============
.. rest_method:: GET /v2/service_status
List all Services and statuses.
.. rest_status_code:: success status.yaml
- 200
.. rest_status_code:: error status.yaml
- 400
- 401
- 403
- 404
- 405
- 503
Request Parameters
------------------
.. rest_parameters:: parameters.yaml
- x-auth-token: x-auth-token
- x-auth-all-projects: x-auth-all-projects
- x-auth-sudo-project-id: x-auth-sudo-project-id
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- x-openstack-request-id: x-openstack-request-id
- id: id
Response Example
----------------
.. literalinclude:: samples/service_status/service_status_list.json
:language: javascript

View File

@ -1,240 +0,0 @@
===
Tld
===
Tld operations.
Create Tld
==========
.. rest_method:: POST /v2/tlds
Create a tld
Normal response codes: 201
Error response codes: 409,405,404,403,401,400,503
Request
-------
.. rest_parameters:: parameters.yaml
- x-auth-token: x-auth-token
- x-auth-all-projects: x-auth-all-projects
- x-auth-sudo-project-id: x-auth-sudo-project-id
- name: tld_name
- description: tld_description
Request Example
---------------
.. literalinclude:: samples/tlds/create-tld-request.json
:language: javascript
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- x-openstack-request-id: x-openstack-request-id
- id: id
- name: tld_name
- description: tld_description
- created_at: created_at
- updated_at: updated_at
- links: links
Response Example
----------------
.. literalinclude:: samples/tlds/tld-response.json
:language: javascript
Show Tld
========
.. rest_method:: GET /v2/tlds/{tld_id}
Show a tld
Normal response codes: 200
Error response codes: 405,404,403,401,400,503
Request
-------
.. rest_parameters:: parameters.yaml
- x-auth-token: x-auth-token
- x-auth-all-projects: x-auth-all-projects
- x-auth-sudo-project-id: x-auth-sudo-project-id
- tld_id: tld_id
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- x-openstack-request-id: x-openstack-request-id
- id: id
- name: tld_name
- description: tld_description
- created_at: created_at
- updated_at: updated_at
- links: links
Response Example
----------------
.. literalinclude:: samples/tlds/tld-response.json
:language: javascript
List Tlds
=========
.. rest_method:: GET /v2/tlds
List the tlds associated with the Project
Normal response codes: 200
Error response codes: 405,403,401,400,503
Request
-------
.. rest_parameters:: parameters.yaml
- x-auth-token: x-auth-token
- x-auth-all-projects: x-auth-all-projects
- x-auth-sudo-project-id: x-auth-sudo-project-id
- limit: limit
- marker: marker
- sort_dir: sort_dir
- sort_key: sort_key
- name: tld_name_filter
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- x-openstack-request-id: x-openstack-request-id
- id: id
- name: tld_name
- description: tld_description
- created_at: created_at
- updated_at: updated_at
- links: links
Response Example
----------------
.. literalinclude:: samples/tlds/list-tlds-response.json
:language: javascript
Update Tld
==========
.. rest_method:: PATCH /v2/tlds/{tld_id}
Update a tld
Normal response codes: 200
Error response codes: 405,404,403,401,400,503
Request
-------
.. rest_parameters:: parameters.yaml
- x-auth-token: x-auth-token
- x-auth-all-projects: x-auth-all-projects
- x-auth-sudo-project-id: x-auth-sudo-project-id
- tld_id: tld_id
- name: tld_name
- description: tld_description
Request Example
---------------
.. literalinclude:: samples/tlds/update-tld-request.json
:language: javascript
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- x-openstack-request-id: x-openstack-request-id
- id: id
- name: tld_name
- description: tld_description
- created_at: created_at
- updated_at: updated_at
- links: links
Response Example
----------------
.. literalinclude:: samples/tlds/update-tld-response.json
:language: javascript
Delete Tld
==========
.. rest_method:: DELETE /v2/tlds/{tld_id}
Delete a tld
Normal response codes: 204
Error response codes: 405,404,403,401,400,503
Request
-------
.. rest_parameters:: parameters.yaml
- x-auth-token: x-auth-token
- x-auth-all-projects: x-auth-all-projects
- x-auth-sudo-project-id: x-auth-sudo-project-id
- tld_id: tld_id
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- x-openstack-request-id: x-openstack-request-id

View File

@ -1,261 +0,0 @@
=======
Tsigkey
=======
Transaction signatures (TSIG) is a mechanism used to secure DNS messages and
to provide secure server-to-server communication (usually between master and
slave server, but can be extended for dynamic updates as well).
Create Tsigkeys
===============
.. rest_method:: POST /v2/tsigkeys
Create a new Tsigkey
Normal response codes: 201
Error response codes: 409, 405,404,403,401,400,503
Request
-------
.. rest_parameters:: parameters.yaml
- x-auth-token: x-auth-token
- x-auth-all-projects: x-auth-all-projects
- x-auth-sudo-project-id: x-auth-sudo-project-id
- name: tsigkey_name
- algorithm: tsigkey_algorithm
- secret: tsigkey_secret
- scope: tsigkey_scope
- resource_id: resource_id
Request Example
---------------
.. literalinclude:: samples/tsigkeys/create-tsigkey-request.json
:language: javascript
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- x-openstack-request-id: x-openstack-request-id
- id: id
- resource_id: resource_id
- name: tsigkey_name
- scope: tsigkey_scope
- secret: tsigkey_secret
- algorithm: tsigkey_algorithm
- created_at: created_at
- updated_at: updated_at
- links: links
Response Example
----------------
.. literalinclude:: samples/tsigkeys/tsigkey-response.json
:language: javascript
List Tsigkeys
=============
.. rest_method:: GET /v2/tsigkeys
List all tsigkeys
Normal response codes: 200
Error response codes: 405,404,403,401,400,503
Request Parameters
------------------
.. rest_parameters:: parameters.yaml
- x-auth-token: x-auth-token
- x-auth-all-projects: x-auth-all-projects
- x-auth-sudo-project-id: x-auth-sudo-project-id
- limit: limit
- marker: marker
- sort_dir: sort_dir
- sort_key: sort_key
- name: tsigkey_name_filter
- algorithm: tsigkey_algorithm_filter
- scope: tsigkey_scope_filter
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- x-openstack-request-id: x-openstack-request-id
- id: id
- resource_id: resource_id
- name: tsigkey_name
- scope: tsigkey_scope
- secret: tsigkey_secret
- algorithm: tsigkey_algorithm
- created_at: created_at
- updated_at: updated_at
- links: links
Response Example
----------------
.. literalinclude:: samples/tsigkeys/list-tsigkeys-response.json
:language: javascript
Show a Tsigkey
==============
.. rest_method:: GET /v2/tsigkeys/{tsigkey_id}
Show a tsigkey
Normal response codes: 200
Error response codes: 405,404,403,401,400,503
Request
-------
.. rest_parameters:: parameters.yaml
- x-auth-token: x-auth-token
- x-auth-all-projects: x-auth-all-projects
- x-auth-sudo-project-id: x-auth-sudo-project-id
- tsigkey_id: tsigkey_id
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- x-openstack-request-id: x-openstack-request-id
- id: id
- resource_id: resource_id
- name: tsigkey_name
- scope: tsigkey_scope
- secret: tsigkey_secret
- algorithm: tsigkey_algorithm
- created_at: created_at
- updated_at: updated_at
- links: links
Response Example
----------------
.. literalinclude:: samples/tsigkeys/tsigkey-response.json
:language: javascript
Update Tsigkey
================
.. rest_method:: PATCH /v2/tsigkeys/{tsigkey_id}
Update the attribute(s) of an existing tsigkey
Normal response codes: 200
Error response codes: 405,404,403,401,400,503
Request Parameters
------------------
.. rest_parameters:: parameters.yaml
- x-auth-token: x-auth-token
- x-auth-all-projects: x-auth-all-projects
- x-auth-sudo-project-id: x-auth-sudo-project-id
- name: tsigkey_name
- algorithm: tsigkey_algorithm
- secret: tsigkey_secret
- scope: tsigkey_scope
- resource_id: resource_id
- tsigkey_id: tsigkey_id
Request Example
---------------
.. literalinclude:: samples/tsigkeys/update-tsigkey-request.json
:language: javascript
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- x-openstack-request-id: x-openstack-request-id
- id: id
- resource_id: resource_id
- name: tsigkey_name
- scope: tsigkey_scope
- secret: tsigkey_secret
- algorithm: tsigkey_algorithm
- created_at: created_at
- updated_at: updated_at
- links: links
Response Example
----------------
.. literalinclude:: samples/tsigkeys/update-tsigkey-response.json
:language: javascript
Delete a Tsigkey
================
.. rest_method:: DELETE /v2/tsigkeys/{tsigkey_id}
Delete a tsigkey
Normal response codes: 204
Error response codes: 405,404,403,401,400,503
Request
-------
.. rest_parameters:: parameters.yaml
- x-auth-token: x-auth-token
- x-auth-all-projects: x-auth-all-projects
- x-auth-sudo-project-id: x-auth-sudo-project-id
- tsigkey_id: tsigkey_id
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- x-openstack-request-id: x-openstack-request-id

View File

@ -1,37 +0,0 @@
============
API Versions
============
Show all enabled API versions
List all API versions
=====================
.. rest_method:: GET /
Normal response codes: 200
Error response codes: 405,404,403,401,400,503
Request
-------
No parameters needed
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- x-openstack-request-id: x-openstack-request-id
Response Example
----------------
.. literalinclude:: samples/versions/get-versions-response.json
:language: javascript

View File

@ -1,227 +0,0 @@
============
Zone Exports
============
Zone exports can be an asynchronous operation,
and there are different endpoints to view the status and progress of an export
Create a Zone Export
====================
.. rest_method:: POST /v2/zones/{zone_id}/tasks/export
Export a zone.
.. note:: This POST should have no body
Normal response codes: 202
Error response codes: 405,404,403,401,400,503
Request
-------
.. rest_parameters:: parameters.yaml
- x-auth-token: x-auth-token
- x-auth-all-projects: x-auth-all-projects
- x-auth-sudo-project-id: x-auth-sudo-project-id
- zone_id: path_zone_id
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- x-openstack-request-id: x-openstack-request-id
- id: zone_export_id
- location: zone_export_location
- status: zone_export_status
- zone_id: zone_export_zone_id
- message: zone_export_message
- project_id: project_id
- created_at: created_at
- updated_at: updated_at
- version: version
Response Example
----------------
.. literalinclude:: samples/zones/create-zone-export-response.json
:language: javascript
List all Zone Exports
=====================
.. rest_method:: GET /v2/zones/tasks/exports
Normal response codes: 200
Error response codes: 405,404,403,401,400,503
Request
-------
.. rest_parameters:: parameters.yaml
- x-auth-token: x-auth-token
- x-auth-all-projects: x-auth-all-projects
- x-auth-sudo-project-id: x-auth-sudo-project-id
- zone_id: zone_export_zone_id_filter
- message: zone_export_message_filter
- status: zone_export_status_filter
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- x-openstack-request-id: x-openstack-request-id
- id: zone_export_id
- location: zone_export_location
- status: zone_export_status
- zone_id: zone_export_zone_id
- project_id: project_id
- created_at: created_at
- updated_at: updated_at
- version: version
- links: links
- metadata: metadata
Response Example
----------------
.. literalinclude:: samples/zones/list-zone-export-response.json
:language: javascript
Show a Zone Export Information
==============================
.. rest_method:: GET /v2/zones/tasks/exports/{zone_export_id}
Normal response codes: 200
Error response codes: 405,404,403,401,400,503
Request
-------
.. rest_parameters:: parameters.yaml
- x-auth-token: x-auth-token
- x-auth-all-projects: x-auth-all-projects
- x-auth-sudo-project-id: x-auth-sudo-project-id
- zone_export_id: path_zone_export_id
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- x-openstack-request-id: x-openstack-request-id
- id: zone_export_id
- location: zone_export_location
- status: zone_export_status
- zone_id: zone_export_zone_id
- project_id: project_id
- created_at: created_at
- updated_at: updated_at
- version: version
- links: links
Response Example
----------------
.. literalinclude:: samples/zones/show-zone-export-response.json
:language: javascript
Retrive a Zone Export from the Designate Datastore
==================================================
.. rest_method:: GET /v2/zones/tasks/exports/{zone_export_id}/export
Normal response codes: 200
Error response codes: 405,404,403,401,400,503
.. note::
This endpoint will send a response with a ``text/dns`` content-type.
If the client does not include a ``Accepts: text/dns`` header the request
will be rejected.
Request
-------
.. rest_parameters:: parameters.yaml
- x-auth-token: x-auth-token
- x-auth-all-projects: x-auth-all-projects
- x-auth-sudo-project-id: x-auth-sudo-project-id
- zone_export_id: path_zone_export_id
- accepts: zone_export_accepts
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- x-openstack-request-id: x-openstack-request-id
Response Example
----------------
.. literalinclude:: samples/zones/show-zone-export-content.txt
:language: text
Delete a Zone Export
====================
.. rest_method:: DELETE /v2/zones/tasks/exports/{zone_export_id}
This will just delete the record of the zone export, not the exported zone.
The zone will have to be deleted from the zone delete API
Normal response codes: 204
Error response codes: 405,404,403,401,400,503
Request
-------
.. rest_parameters:: parameters.yaml
- x-auth-token: x-auth-token
- x-auth-all-projects: x-auth-all-projects
- x-auth-sudo-project-id: x-auth-sudo-project-id
- zone_export_id: path_zone_export_id
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- x-openstack-request-id: x-openstack-request-id

View File

@ -1,178 +0,0 @@
===========
Zone Import
===========
Zone imports are an asynchronous operation, and there are different endpoints
to view the status and progress of an import
Create a Zone Import
====================
.. rest_method:: POST /v2/zones/tasks/imports
Import a zone.
.. note:: This POST should have no body, and the content-type should be text/dns
Normal response codes: 202
Error response codes: 405,404,403,401,400,503
Request
-------
.. rest_parameters:: parameters.yaml
- x-auth-token: x-auth-token
- x-auth-all-projects: x-auth-all-projects
- x-auth-sudo-project-id: x-auth-sudo-project-id
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- x-openstack-request-id: x-openstack-request-id
- id: zone_import_id
- status: zone_import_status
- zone_id: zone_import_zone_id
- message: zone_import_message
- project_id: project_id
- created_at: created_at
- updated_at: updated_at
- version: version
Response Example
----------------
.. literalinclude:: samples/zones/create-zone-import-response.json
:language: javascript
List all Zone Imports
=====================
.. rest_method:: GET /v2/zones/tasks/imports
Normal response codes: 200
Error response codes: 405,404,403,401,400,503
Request
-------
.. rest_parameters:: parameters.yaml
- x-auth-token: x-auth-token
- x-auth-all-projects: x-auth-all-projects
- x-auth-sudo-project-id: x-auth-sudo-project-id
- zone_id: zone_import_zone_id_filter
- message: zone_import_message_filter
- status: zone_import_status_filter
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- x-openstack-request-id: x-openstack-request-id
- id: zone_import_id
- status: zone_import_status
- zone_id: zone_import_zone_id
- project_id: project_id
- created_at: created_at
- updated_at: updated_at
- version: version
- links: links
- metadata: metadata
Response Example
----------------
.. literalinclude:: samples/zones/list-zone-import-response.json
:language: javascript
Show a Zone Import
==================
.. rest_method:: GET /v2/zones/tasks/imports/{zone_import_id}
Normal response codes: 200
Error response codes: 405,404,403,401,400,503
Request
-------
.. rest_parameters:: parameters.yaml
- x-auth-token: x-auth-token
- x-auth-all-projects: x-auth-all-projects
- x-auth-sudo-project-id: x-auth-sudo-project-id
- zone_import_id: path_zone_import_id
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- x-openstack-request-id: x-openstack-request-id
- id: zone_import_id
- status: zone_import_status
- zone_id: zone_import_zone_id
- project_id: project_id
- created_at: created_at
- updated_at: updated_at
- version: version
- links: links
Response Example
----------------
.. literalinclude:: samples/zones/show-zone-import-response.json
:language: javascript
Delete a Zone Import
====================
.. rest_method:: DELETE /v2/zones/tasks/imports/{zone_import_id}
This will just delete the record of the zone import, not the imported zone.
The zone will have to be deleted from the zone delete API
Normal response codes: 204
Error response codes: 405,404,403,401,400,503
Request
-------
.. rest_parameters:: parameters.yaml
- x-auth-token: x-auth-token
- x-auth-all-projects: x-auth-all-projects
- x-auth-sudo-project-id: x-auth-sudo-project-id
- zone_import_id: path_zone_import_id
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- x-openstack-request-id: x-openstack-request-id

View File

@ -1,156 +0,0 @@
==================================
Zone Ownership Transfers - Accepts
==================================
Designate allows users to transer ownership of a zone between projects.
For the final step, the receiving project has to accept the new zone, using
the ``transfer_accepts`` API
Create Zone Transfer Accept
============================
.. rest_method:: POST /v2/zones/tasks/transfer_accepts
This accepts an offer of a ownership transfer
Normal response codes: 200
Error response codes: 405,404,403,401,400,503
Request
-------
.. rest_parameters:: parameters.yaml
- x-auth-token: x-auth-token
- x-auth-all-projects: x-auth-all-projects
- x-auth-sudo-project-id: x-auth-sudo-project-id
- key: zone_transfer_request_key
- zone_transfer_request_id: zone_transfer_request_id
Request Example
----------------
.. literalinclude:: samples/zones/create-zone-transfer-accept-request.json
:language: javascript
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- x-openstack-request-id: x-openstack-request-id
- id: zone_transfer_accept_id
- status: zone_transfer_request_status
- project_id: project_id
- zone_id: zone_transfer_request_id
- key: zone_transfer_request_key
- created_at: created_at
- updated_at: updated_at
- zone_transfer_request_id: zone_transfer_request_id
- links: links
Response Example
----------------
.. literalinclude:: samples/zones/create-zone-transfer-accept-response.json
:language: javascript
Get Zone Transfer Accept
========================
.. rest_method:: GET /v2/zones/tasks/transfer_requests/{zone_transfer_accept_id}
Normal response codes: 200
Error response codes: 405,404,403,401,400,503
Request
-------
.. rest_parameters:: parameters.yaml
- x-auth-token: x-auth-token
- x-auth-all-projects: x-auth-all-projects
- x-auth-sudo-project-id: x-auth-sudo-project-id
- zone_transfer_accept_id: path_zone_transfer_accept_id
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- x-openstack-request-id: x-openstack-request-id
- id: zone_transfer_accept_id
- status: zone_transfer_request_status
- project_id: project_id
- zone_id: zone_transfer_request_id
- key: zone_transfer_request_key
- created_at: created_at
- updated_at: updated_at
- zone_transfer_request_id: zone_transfer_request_id
- links: links
Response Example
----------------
.. literalinclude:: samples/zones/create-zone-transfer-accept-response.json
:language: javascript
List Zone Transfer Accepts
===========================
.. rest_method:: GET /v2/zones/tasks/transfer_accepts
This will list all your accepted ownership transfer.
Normal response codes: 200
Error response codes: 405,404,403,401,400,503
Request
-------
.. rest_parameters:: parameters.yaml
- x-auth-token: x-auth-token
- x-auth-all-projects: x-auth-all-projects
- x-auth-sudo-project-id: x-auth-sudo-project-id
- status: zone_transfer_accept_status_filter
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- x-openstack-request-id: x-openstack-request-id
- id: zone_transfer_accept_id
- project_id: project_id
- status: zone_transfer_request_status
- zone_id: zone_transfer_request_id
- key: zone_transfer_request_key
- created_at: created_at
- updated_at: updated_at
- zone_transfer_request_id: zone_transfer_request_id
- links: links
- metadata: metadata
Response Example
----------------
.. literalinclude:: samples/zones/list-zone-transfer-accept-response.json
:language: javascript

View File

@ -1,254 +0,0 @@
===================================
Zone Ownership Transfers - Requests
===================================
Designate allows users to transer ownership of a zone between projects.
The traditional route is to create a ``zone_transfer_request``, communicate
the key and ID out of band to the intended owner, and they create a
``zone_transfer_accept`` using this information, which will move the
ownership of the zone that project.
Create Zone Transfer Request
============================
.. rest_method:: POST /v2/zones/{zone_id}/tasks/transfer_requests
This creates an offer to transfer the zone to a different project.
The request can be scoped to single project if the ``project_id`` parameter is
supplied.
.. note:: This POST can have no body.
Normal response codes: 201
Error response codes: 405,404,403,401,400,503
Request
-------
.. rest_parameters:: parameters.yaml
- x-auth-token: x-auth-token
- x-auth-all-projects: x-auth-all-projects
- x-auth-sudo-project-id: x-auth-sudo-project-id
- zone_id: path_zone_id
- target_project_id: zone_transfer_request_target_project_id
- description: description
Request Example
----------------
.. literalinclude:: samples/zones/create-zone-transfer-request-request.json
:language: javascript
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- x-openstack-request-id: x-openstack-request-id
- id: zone_transfer_request_id
- project_id: project_id
- description: description
- status: zone_transfer_request_status
- zone_id: zone_transfer_request_zone_id
- zone_name: zone_transfer_request_zone_name
- key: zone_transfer_request_key
- target_project_id: zone_transfer_request_target_project_id
- created_at: created_at
- updated_at: updated_at
- version: version
Response Example
----------------
.. literalinclude:: samples/zones/create-zone-transfer-request-response.json
:language: javascript
List Zone Transfer Requests
===========================
.. rest_method:: GET /v2/zones/tasks/transfer_requests
This will list all your outgoing requests, and any incoming requests that
have been scoped to your project.
Normal response codes: 200
Error response codes: 405,404,403,401,400,503
Request
-------
.. rest_parameters:: parameters.yaml
- x-auth-token: x-auth-token
- x-auth-all-projects: x-auth-all-projects
- x-auth-sudo-project-id: x-auth-sudo-project-id
- status: zone_transfer_request_status_filter
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- x-openstack-request-id: x-openstack-request-id
- id: zone_transfer_request_id
- project_id: project_id
- description: description
- status: zone_transfer_request_status
- zone_id: zone_transfer_request_zone_id
- zone_name: zone_transfer_request_zone_name
- key: zone_transfer_request_key
- target_project_id: zone_transfer_request_target_project_id
- created_at: created_at
- updated_at: updated_at
- version: version
Response Example
----------------
.. literalinclude:: samples/zones/list-zone-transfer-request-response.json
:language: javascript
Show a Zone Transfer Request
============================
.. rest_method:: GET /v2/zones/tasks/transfer_requests/{zone_transfer_request_id}
Normal response codes: 200
Error response codes: 405,404,403,401,400,503
Request
-------
.. rest_parameters:: parameters.yaml
- x-auth-token: x-auth-token
- x-auth-all-projects: x-auth-all-projects
- x-auth-sudo-project-id: x-auth-sudo-project-id
- zone_transfer_request_id: path_zone_transfer_request_id
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- x-openstack-request-id: x-openstack-request-id
- id: zone_transfer_request_id
- project_id: project_id
- description: description
- status: zone_transfer_request_status
- zone_id: zone_transfer_request_zone_id
- zone_name: zone_transfer_request_zone_name
- key: zone_transfer_request_key
- target_project_id: zone_transfer_request_target_project_id
- created_at: created_at
- updated_at: updated_at
- version: version
Response Example
----------------
.. literalinclude:: samples/zones/show-zone-transfer-request-response.json
:language: javascript
Update a Zone Transfer Request
==============================
.. rest_method:: PATCH /v2/zones/tasks/transfer_requests/{zone_transfer_request_id}
Normal response codes: 200
Error response codes: 405,404,403,401,400,503
Request
-------
.. rest_parameters:: parameters.yaml
- x-auth-token: x-auth-token
- x-auth-all-projects: x-auth-all-projects
- x-auth-sudo-project-id: x-auth-sudo-project-id
- zone_transfer_request_id: path_zone_transfer_request_id
- target_project_id: zone_transfer_request_target_project_id
- description: description
Request Example
----------------
.. literalinclude:: samples/zones/update-zone-transfer-request-request.json
:language: javascript
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- x-openstack-request-id: x-openstack-request-id
- id: zone_transfer_request_id
- project_id: project_id
- description: description
- status: zone_transfer_request_status
- zone_id: zone_transfer_request_zone_id
- zone_name: zone_transfer_request_zone_name
- key: zone_transfer_request_key
- target_project_id: zone_transfer_request_target_project_id
- created_at: created_at
- updated_at: updated_at
- version: version
Response Example
----------------
.. literalinclude:: samples/zones/update-zone-transfer-request-response.json
:language: javascript
Delete a Zone Transfer Request
==============================
.. rest_method:: DELETE /v2/zones/tasks/transfer_requests/{zone_transfer_request_id}
Normal response codes: 204
Error response codes: 405,404,403,401,400,503
Request
-------
.. rest_parameters:: parameters.yaml
- x-auth-token: x-auth-token
- x-auth-all-projects: x-auth-all-projects
- x-auth-sudo-project-id: x-auth-sudo-project-id
- zone_transfer_request_id: path_zone_transfer_request_id
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- x-openstack-request-id: x-openstack-request-id

View File

@ -1,84 +0,0 @@
==========
Zone Tasks
==========
Zone tasks.
Abandon Zone
============
.. rest_method:: POST /v2/zones/{zone_id}/tasks/abandon
Abandon a zone.
This removes a zone from the designate database without removing it
from the backends.
.. note:: This POST should have no body.
.. warning::
This is a protentially dangerous operation, and should only be used if required
Normal response codes: 204
Error response codes: 405,404,403,401,400,503
Request
-------
.. rest_parameters:: parameters.yaml
- x-auth-token: x-auth-token
- x-auth-all-projects: x-auth-all-projects
- x-auth-sudo-project-id: x-auth-sudo-project-id
- zone_id: path_zone_id
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- x-openstack-request-id: x-openstack-request-id
Manually Trigger an Update of a Secondary Zone
==============================================
.. rest_method:: POST /v2/zones/{zone_id}/tasks/xfr
Trigger a new XFR from the upstream DNS servers
This will cause designate to query the name servers and if the version in
Designate is out of date, import the new version.
This is useful if an upstream server failed to send a notify to Designate
.. note:: This POST should have no body.
.. important:: This is only useful on SECONDARY zones.
Normal response codes: 202
Error response codes: 405,404,403,401,400,503
Request
-------
.. rest_parameters:: parameters.yaml
- x-auth-token: x-auth-token
- x-auth-all-projects: x-auth-all-projects
- x-auth-sudo-project-id: x-auth-sudo-project-id
- zone_id: path_zone_id
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- x-openstack-request-id: x-openstack-request-id

View File

@ -1,364 +0,0 @@
====
Zone
====
Zone operations.
Create Zone
===========
.. rest_method:: POST /v2/zones
Create a zone
Normal response codes: 202
Error response codes: 405,404,403,401,400,503
Request
-------
.. rest_parameters:: parameters.yaml
- x-auth-token: x-auth-token
- x-auth-all-projects: x-auth-all-projects
- x-auth-sudo-project-id: x-auth-sudo-project-id
- name: zone_name
- email: zone_email
- ttl: zone_ttl
- description: zone_description
- masters: zone_masters
- type: zone_type
Request Example
---------------
.. literalinclude:: samples/zones/create-zone-request.json
:language: javascript
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- x-openstack-request-id: x-openstack-request-id
- id: id
- pool_id: zone_pool_id
- project_id: project_id
- name: zone_name
- email: zone_email
- ttl: zone_ttl
- serial: zone_serial
- status: status
- action: action
- description: zone_description
- masters: zone_masters
- type: zone_type
- transfered_at: zone_transfered_at
- version: version
- created_at: created_at
- updated_at: updated_at
- links: links
Response Example
----------------
.. literalinclude:: samples/zones/zone-response.json
:language: javascript
List Zones
==========
.. rest_method:: GET /v2/zones
List all zones
Normal response codes: 200
Error response codes: 405,404,403,401,400,503
Request
-------
.. rest_parameters:: parameters.yaml
- x-auth-token: x-auth-token
- x-auth-all-projects: x-auth-all-projects
- x-auth-sudo-project-id: x-auth-sudo-project-id
- limit: limit
- marker: marker
- sort_dir: sort_dir
- sort_key: sort_key
- name: zone_name_filter
- type: zone_type_filter
- email: zone_email_filter
- status: zone_status_filter
- description: zone_description_filter
- ttl: zone_ttl_filter
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- x-openstack-request-id: x-openstack-request-id
- id: id
- pool_id: zone_pool_id
- project_id: project_id
- name: zone_name
- email: zone_email
- ttl: zone_ttl
- serial: zone_serial
- status: status
- action: action
- description: zone_description
- masters: zone_masters
- type: zone_type
- transfered_at: zone_transfered_at
- version: version
- created_at: created_at
- updated_at: updated_at
- links: links
- metadata: metadata
Response Example
----------------
.. literalinclude:: samples/zones/list-zones-response.json
:language: javascript
Show a Zone
===========
.. rest_method:: GET /v2/zones/{zone_id}
Show a zone
Normal response codes: 200
Error response codes: 405,404,403,401,400,503
Request
-------
.. rest_parameters:: parameters.yaml
- x-auth-token: x-auth-token
- x-auth-all-projects: x-auth-all-projects
- x-auth-sudo-project-id: x-auth-sudo-project-id
- zone_id: path_zone_id
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- x-openstack-request-id: x-openstack-request-id
- id: id
- pool_id: zone_pool_id
- project_id: project_id
- name: zone_name
- email: zone_email
- ttl: zone_ttl
- serial: zone_serial
- status: status
- action: action
- description: zone_description
- masters: zone_masters
- type: zone_type
- transfered_at: zone_transfered_at
- version: version
- created_at: created_at
- updated_at: updated_at
- links: links
Response Example
----------------
.. literalinclude:: samples/zones/zone-response.json
:language: javascript
Get the Name Servers for a Zone
===============================
.. rest_method:: GET /v2/zones/{zone_id}/nameservers
Show the nameservers for a zone
Normal response codes: 200
Error response codes: 405,404,403,401,400,503
Request
-------
.. rest_parameters:: parameters.yaml
- x-auth-token: x-auth-token
- x-auth-all-projects: x-auth-all-projects
- x-auth-sudo-project-id: x-auth-sudo-project-id
- zone_id: path_zone_id
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- x-openstack-request-id: x-openstack-request-id
- hostname: zone_nameserver_hostname
- priority: zone_nameserver_priority
Response Example
----------------
.. literalinclude:: samples/zones/show-zone-nameservers-response.json
:language: javascript
Update a Zone
=============
.. rest_method:: PATCH /v2/zones/{zone_id}
Update the attribute(s) for an existing zone.
Normal response codes: 202
Error response codes: 405,404,403,401,400,503
Request
-------
.. rest_parameters:: parameters.yaml
- x-auth-token: x-auth-token
- x-auth-all-projects: x-auth-all-projects
- x-auth-sudo-project-id: x-auth-sudo-project-id
- zone_id: path_zone_id
- email: zone_email_update
- ttl: zone_ttl
- description: zone_description
Request Example
---------------
.. literalinclude:: samples/zones/update-zone-request.json
:language: javascript
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- x-openstack-request-id: x-openstack-request-id
- id: id
- pool_id: zone_pool_id
- project_id: project_id
- name: zone_name
- email: zone_email
- ttl: zone_ttl
- serial: zone_serial
- status: status
- action: action
- description: zone_description
- masters: zone_masters
- type: zone_type
- transfered_at: zone_transfered_at
- version: version
- created_at: created_at
- updated_at: updated_at
- links: links
Response Example
----------------
.. literalinclude:: samples/zones/update-zone-response.json
:language: javascript
Delete a Zone
=============
.. rest_method:: DELETE /v2/zones/{zone_id}
Delete a zone
Normal response codes: 202
Error response codes: 405,404,403,401,400,503
Request
-------
.. rest_parameters:: parameters.yaml
- x-auth-token: x-auth-token
- x-auth-all-projects: x-auth-all-projects
- x-auth-sudo-project-id: x-auth-sudo-project-id
- zone_id: path_zone_id
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- x-openstack-request-id: x-openstack-request-id
- id: id
- pool_id: zone_pool_id
- project_id: project_id
- name: zone_name
- email: zone_email
- ttl: zone_ttl
- serial: zone_serial
- status: status
- action: action
- description: zone_description
- masters: zone_masters
- type: zone_type
- transfered_at: zone_transfered_at
- version: version
- created_at: created_at
- updated_at: updated_at
- links: links
Response Example
----------------
.. literalinclude:: samples/zones/delete-zone-response.json
:language: javascript

View File

@ -1,24 +0,0 @@
:tocdepth: 2
========
DNS API
========
.. rest_expand_all::
.. include:: dns-api-v2-version.inc
.. include:: dns-api-v2-zone.inc
.. include:: dns-api-v2-zone-import.inc
.. include:: dns-api-v2-zone-export.inc
.. include:: dns-api-v2-zone-tasks.inc
.. include:: dns-api-v2-zone-ownership-transfer-request.inc
.. include:: dns-api-v2-zone-ownership-transfer-accept.inc
.. include:: dns-api-v2-recordset.inc
.. include:: dns-api-v2-pool.inc
.. include:: dns-api-v2-limits.inc
.. include:: dns-api-v2-tld.inc
.. include:: dns-api-v2-tsigkey.inc
.. include:: dns-api-v2-blacklist.inc
.. include:: dns-api-v2-quota.inc
.. include:: dns-api-v2-service-status.inc
.. include:: dns-api-v2-reverse-floatingips.inc

View File

@ -1,897 +0,0 @@
####################
# Header Variables #
####################
x-auth-all-projects:
description: |
If enabled this will show results from all projects in Designate
in: header
required: false
type: bool
x-auth-sudo-project-id:
description: |
This allows a user to impersonate another project
in: header
required: false
type: string
x-auth-token:
description: |
Token used to identify the user from keystone
in: header
required: false
type: string
x-designate-edit-managed-records:
description: |
If enabled this will all users to edit records flagged as managed
in: header
required: false
type: bool
x-openstack-request-id:
description: |
ID of the request
in: header
required: true
type: string
zone_export_accepts:
description: >
Content-Type that will be accepted by the client.
This endpoint will send a response with a ``text/dns`` content-type.
If the client does not include a ``Accepts: text/dns`` header
in: header
required: true
type: string
####################
# Path Variables #
####################
blacklist_id:
description: |
ID for this blacklist
in: path
required: true
type: uuid
floatingip_id:
description: |
ID for the floatingip associated with the project
in: path
required: true
type: uuid
path_pool_id:
description: |
ID for this pool
in: path
required: true
type: uuid
path_project_id:
description: |
ID for the project
in: path
required: true
type: uuid
path_recordset_id:
description: |
ID for the recordset
in: path
required: true
type: uuid
path_zone_export_id:
description: |
ID for this zone export
in: path
required: true
type: uuid
path_zone_id:
description: |
ID for the zone
in: path
required: true
type: uuid
path_zone_import_id:
description: |
ID for this zone import
in: path
required: true
type: uuid
path_zone_transfer_accept_id:
description: |
ID for this zone transfer accept
in: path
required: true
type: uuid
path_zone_transfer_request_id:
description: |
ID for this zone transfer request
in: path
required: true
type: uuid
region:
description: |
Openstack region
in: path
required: true
type: string
tld_id:
description: |
ID for this tld
in: path
required: true
type: uuid
tsigkey_id:
description: |
ID for this tsigkey
in: path
required: true
type: uuid
####################
# Query Variables #
####################
blacklist_pattern_filter:
description: |
Filter results to only show blacklists that have a pattern matching the filter
in: query
required: false
type: string
limit:
description: |
Requests a page size of items. Returns a number
of items up to a limit value. Use the ``limit`` parameter to make
an initial limited request and use the ID of the last-seen item
from the response as the ``marker`` parameter value in a
subsequent limited request.
in: query
required: false
type: integer
marker:
description: |
The ID of the last-seen item. Use the ``limit``
parameter to make an initial limited request and use the ID of the
last-seen item from the response as the ``marker`` parameter value
in a subsequent limited request.
in: query
required: false
type: string
recordset_data_filter:
description: |
Filter results to only show recordsets that have a record with data matching the filter
in: query
required: false
type: string
recordset_description_filter:
description: |
Filter results to only show recordsets that have a description matching the filter
in: query
required: false
type: string
recordset_name_filter:
description: |
Filter results to only show recordsets that have a name matching the filter
in: query
required: false
type: string
recordset_status_filter:
description: |
Filter results to only show recordsets that have a status matching the filter
in: query
required: false
type: string
recordset_ttl_filter:
description: |
Filter results to only show recordsets that have a ttl matching the filter
in: query
required: false
type: string
recordset_type_filter:
description: |
Filter results to only show recordsets that have a type matching the filter
in: query
required: false
type: string
sort_dir:
description: |
Sorts the response by the requested sort
direction. A valid value is ``asc`` (ascending) or ``desc``
(descending). Default is ``asc``. You can specify multiple pairs
of sort key and sort direction query parameters. If you omit the
sort direction in a pair, the API uses the natural sorting
direction of the server attribute that is provided as the
``sort_key``.
in: query
required: false
type: string
sort_key:
description: |
Sorts the response by the this attribute value.
Default is ``id``. You can specify multiple pairs of sort key and
sort direction query parameters. If you omit the sort direction in
a pair, the API uses the natural sorting direction of the server
attribute that is provided as the ``sort_key``.
in: query
required: false
type: string
tld_name_filter:
description: |
Filter results to only show tlds that have a name matching the filter
in: query
required: false
type: string
tsigkey_algorithm_filter:
description: |
Filter results to only show tsigkeys that have an algorithm matching the filter
in: query
required: false
type: string
tsigkey_name_filter:
description: |
Filter results to only show tsigkeys that have a name matching the filter
in: query
required: false
type: string
tsigkey_scope_filter:
description: |
Filter results to only show tsigkeys that have a scope matching the filter
in: query
required: false
type: string
zone_description_filter:
description: |
Filter results to only show zones that have a description matching the filter
in: query
required: false
type: string
zone_email_filter:
description: |
Filter results to only show zones that have an email matching the filter
in: query
required: false
type: string
zone_export_message_filter:
description: |
Filter results to only show ``zone_exports`` that have a ``message`` matching the filter
in: query
required: false
type: string
zone_export_status_filter:
description: |
Filter results to only show ``zone_exports`` that have a ``status`` matching the filter
in: query
required: false
type: string
zone_export_zone_id_filter:
description: |
Filter results to only show ``zone_exports`` that have a ``zone_id`` matching the filter
in: query
required: false
type: uuid
zone_import_message_filter:
description: |
Filter results to only show zone_imports that have a ``message`` matching the filter
in: query
required: false
type: string
zone_import_status_filter:
description: |
Filter results to only show zone_imports that have a ``status`` matching the filter
in: query
required: false
type: string
zone_import_zone_id_filter:
description: |
Filter results to only show zone_imports that have a ``zone_id`` matching the filter
in: query
required: false
type: uuid
zone_name_filter:
description: |
Filter results to only show zones that have a name matching the filter
in: query
required: false
type: string
zone_status_filter:
description: |
Filter results to only show zones that have a status matching the filter
in: query
required: false
type: string
zone_transfer_accept_status_filter:
description: |
Filter results to only show ``zone_transfer_accepts`` that have a ``status`` matching the filter
in: query
required: false
type: string
zone_transfer_request_status_filter:
description: |
Filter results to only show ``zone_transfer_requests`` that have a ``status`` matching the filter
in: query
required: false
type: string
zone_ttl_filter:
description: |
Filter results to only show zones that have a ttl matching the filter
in: query
required: false
type: integer
zone_type_filter:
description: |
Filter results to only show zones that have a type matching the filter
in: query
required: false
type: string
####################
# Body Variables #
####################
action:
description: |
current action in progress on the resource
in: body
required: true
type: enum
blacklist_description:
description: |
Description for this blacklist
in: body
required: false
type: string
blacklist_pattern:
description: |
Pattern for this blacklist
in: body
required: true
type: string
created_at:
description: |
Date / Time when resource was created
in: body
required: true
type: datestamp
description:
description: |
Description for the resource. Only shown in API / Horizon
in: body
required: true
type: string
floatingip_address:
description: |
The floatingip address for this PTR record.
in: body
required: true
type: string
fptr_description:
description: |
Description for this PTR record
in: body
required: true
type: string
fptr_id:
description: |
ID for PTR record in the format of <region>:<floatingip_id>
in: body
required: true
type: string
fptr_ttl:
description: |
Time to live for this PTR record
in: body
required: true
type: uuid
fptrd_name:
description: |
Domain name for this PTR record
in: body
required: true
type: string
id:
description: |
ID for the resource
in: body
required: true
type: uuid
links:
description: |
Links to the resource, and other related resources.
When a response has been broken into pages, we will include
a ``next`` link that should be followed to retrieve all results
in: body
required: true
type: object
max_page_limit:
description: |
The max amount of items allowed per page
in: body
required: true
type: integer
max_recordset_name_length:
description: |
The max length of a recordset name
in: body
required: true
type: integer
max_recordset_records:
description: |
The max amount of records contained in a recordset
in: body
required: true
type: integer
max_zone_name_length:
description: |
The max length of a zone name
in: body
required: true
type: integer
max_zone_records:
description: |
The max amount of records in a zone
in: body
required: true
type: integer
max_zone_recordsets:
description: |
The max amount of recordsets per zone
in: body
required: true
type: integer
max_zones:
description: |
The max amount of zones for this project
in: body
required: true
type: integer
metadata:
description: |
Returns the ``total_count`` of resources matching this filter
in: body
required: true
type: object
min_ttl:
description: |
The lowest ttl allowed on this system
in: body
required: true
type: integer
pool_attributes:
description: >
Key:Value pairs of information about this pool. This information can be used by the scheduler to place zones on the correct pools
in: body
required: true
type: object
pool_id:
description: |
ID for this pool
in: body
required: true
type: uuid
pool_name:
description: |
Name for this pool
in: body
required: true
type: string
pool_ns_records:
description: |
Name Servers for this pool. Any zones hosted by this pool should be delegated to these DNS servers
in: body
required: true
type: string
project_id:
description: |
ID for the project that owns the resource
in: body
required: true
type: uuid
recordset_description:
description: |
Description for this recordset
in: body
required: false
type: string
recordset_name:
description: |
DNS Name for the recordset
in: body
required: true
type: hostname
recordset_records:
description: |
A list of data for this recordset. Each item will be a separate record in Designate
These items should conform to the DNS spec for the record type - e.g. A records
must be IPv4 addresses, CNAME records must be a hostname.
in: body
required: true
type: string
recordset_ttl:
description: |
TTL (Time to Live) for the recordset.
in: body
required: false
type: integer
recordset_type:
description: |
They RRTYPE of the recordset.
in: body
required: true
type: string
recordset_zone_id:
description: |
ID for the zone that contains this recordset
in: body
required: true
type: uuid
recordset_zone_name:
description: |
The name of the zone that contains this recordset
in: body
required: true
type: string
resource_id:
description: |
resource id for this tsigkey which can be either zone or pool id
in: body
required: true
type: string
status:
description: |
status of the resource
in: body
required: true
type: enum
tld_description:
description: |
Description for this tld
in: body
required: false
type: string
tld_name:
description: |
Name for this tld
in: body
required: true
type: string
tsigkey_algorithm:
description: |
The encryption algorithm for this tsigkey
in: body
required: true
type: string
tsigkey_name:
description: |
Name for this tsigkey
in: body
required: true
type: string
tsigkey_scope:
description: |
scope for this tsigkey which can be either ZONE or POOL scope
in: body
required: true
type: string
tsigkey_secret:
description: |
The actual key to be used
in: body
required: true
type: string
updated_at:
description: |
Date / Time when resource last updated
in: body
required: false
type: datestamp
version:
description: |
Version of the resource
in: body
required: true
type: integer
zone_description:
description: |
Description for this zone
in: body
required: false
type: string
zone_email:
description: |
e-mail for the zone. Used in SOA records for the zone
in: body
required: true
type: string
zone_email_update:
description: |
e-mail for the zone. Used in SOA records for the zone
in: body
required: false
type: string
zone_export_id:
description: |
ID for this zone export
in: body
required: true
type: uuid
zone_export_location:
description: >
Where the exported zone is published to.
There are currently one placement option available - designate.
This will be shown by ``designate://<url>``.
As more drivers are added, this will expand to include swift - this will be
indicated by location being set to ``swift://<region>/<container>/<file>``
This is also allowed be a webserver if the operator implements a different
data store, and will be indicted by ``http://<url>``
When a zone export is complete, the location will be updated, and
the exported zone file will be available at the location specified.
in: body
required: false
type: string
zone_export_message:
description: |
Message about the current status of the export
in: body
required: false
type: uuid
zone_export_status:
description: |
Current status of the zone export
in: body
required: true
type: string
zone_export_zone_id:
description: |
ID for the zone that is being exported
in: body
required: false
type: uuid
zone_import_id:
description: |
ID for this zone import
in: body
required: true
type: uuid
zone_import_message:
description: |
Message about the current status of the import
in: body
required: false
type: uuid
zone_import_status:
description: |
Current status of the zone import
in: body
required: true
type: uuid
zone_import_zone_id:
description: |
ID for the zone that was created by this import
in: body
required: false
type: uuid
zone_masters:
description: |
Mandatory for secondary zones. The servers to slave from to get DNS information
in: body
required: false
type: enum
zone_name:
description: |
DNS Name for the zone
in: body
required: true
type: domainname
zone_nameserver_hostname:
description: |
The hostname of the nameserver that the zone should be delegated to
in: body
required: true
type: hostname
zone_nameserver_priority:
description: |
The priority of the nameserver. This is used to determine the order of the
the nameserver listings, and which server is used in the SOA record for the
zone.
in: body
required: true
type: integer
zone_pool_id:
description: |
ID for the pool hosting this zone
in: body
required: true
type: uuid
zone_serial:
description: |
current serial number for the zone
in: body
required: true
type: integer
zone_transfer_accept_id:
description: |
ID for this zone transfer accept
in: body
required: true
type: uuid
zone_transfer_accept_status:
description: |
Current status of the zone transfer request
in: body
required: true
type: string
zone_transfer_request_id:
description: |
ID for this zone transfer request
in: body
required: true
type: uuid
zone_transfer_request_key:
description: >
Key that is used as part of the zone transfer accept process. This is only
shown to the creator, and must be communicated out of band.
in: body
required: true
type: string
zone_transfer_request_status:
description: |
Current status of the zone transfer request
in: body
required: true
type: string
zone_transfer_request_target_project_id:
description: >
A project ID that the request will be limited to.
No other project will be allowed to accept this request.
in: body
required: false
type: string
zone_transfer_request_zone_id:
description: |
ID for the zone that is being exported
in: body
required: true
type: uuid
zone_transfer_request_zone_name:
description: |
the name of the zone that is being exported
in: body
required: true
type: string
zone_transfered_at:
description: |
For secondary zones. The last time an update was retrieved from the master servers
in: body
required: true
type: enum
zone_ttl:
description: |
TTL (Time to Live) for the zone.
in: body
required: false
type: integer
zone_type:
description: |
Type of zone. PRIMARY is controlled by Designate, SECONDARY zones are slaved from another DNS Server. Defaults to PRIMARY
in: body
required: false
type: enum

View File

@ -1,10 +0,0 @@
{
"description": "This is a blacklisted domain.",
"links": {
"self": "http://127.0.0.1:9001/v2/blacklists/af91edb5-ede8-453f-af13-feabdd088f9c"
},
"pattern": "^([A-Za-z0-9_\\-]+\\.)*example\\.com\\.$",
"created_at": "2016-05-20 06:15:42",
"updated_at": null,
"id": "af91edb5-ede8-453f-af13-feabdd088f9c"
}

View File

@ -1,4 +0,0 @@
{
"pattern" : "^([A-Za-z0-9_\\-]+\\.)*example\\.com\\.$",
"description" : "This is a blacklisted domain."
}

View File

@ -1,27 +0,0 @@
{
"blacklists": [
{
"description": "This is a blacklisted domain.",
"links": {
"self": "http://127.0.0.1:9001/v2/blacklists/af91edb5-ede8-453f-af13-feabdd088f9c"
},
"pattern": "^([A-Za-z0-9_\\-]+\\.)*example\\.com\\.$",
"created_at": "2016-05-20 06:15:42",
"updated_at": null,
"id": "af91edb5-ede8-453f-af13-feabdd088f9c"
},
{
"description": "Example blacklisted domain.",
"links": {
"self": "http://127.0.0.1:9001/v2/blacklists/f26e22f8-619f-4738-9077-0586e7cb76bd"
},
"pattern": "^examples\\.com\\.$",
"created_at": "2016-05-20 06:22:12",
"updated_at": null,
"id": "f26e22f8-619f-4738-9077-0586e7cb76bd"
}
],
"links": {
"self": "http://127.0.0.1:9001/v2/blacklists"
}
}

View File

@ -1,4 +0,0 @@
{
"pattern" : "^examples\\.com\\.$",
"description" : "Updated the description"
}

View File

@ -1,10 +0,0 @@
{
"description": "Updated the description",
"links": {
"self": "http://127.0.0.1:9001/v2/blacklists/f26e22f8-619f-4738-9077-0586e7cb76bd"
},
"pattern": "^examples\\.com\\.$",
"created_at": "2016-05-20 06:22:12",
"updated_at": "2016-05-20 06:41:34",
"id": "f26e22f8-619f-4738-9077-0586e7cb76bd"
}

View File

@ -1,10 +0,0 @@
{
"max_page_limit": 1000,
"max_recordset_name_length": 255,
"max_recordset_records": 20,
"max_zone_name_length": 255,
"max_zone_records": 500,
"max_zone_recordsets": 500,
"max_zones": 10,
"min_ttl": null
}

View File

@ -1,46 +0,0 @@
{
"metadata": {
"total_count": 2
},
"links": {
"self": "http://127.0.0.1:9001/v2/pools"
},
"pools": [
{
"description": null,
"id": "794ccc2c-d751-44fe-b57f-8894c9f5c842",
"project_id": null,
"created_at": "2015-02-18T22:18:58.000000",
"attributes": null,
"ns_records": [
{
"hostname": "ns1.example.org.",
"priority": 1
}
],
"links": {
"self": "http://127.0.0.1:9001/v2/pools/794ccc2c-d751-44fe-b57f-8894c9f5c842"
},
"name": "default",
"updated_at": "2015-02-19T15:59:44.000000"
},
{
"description": null,
"id": "d1716333-8c16-490f-85ee-29af36907605",
"project_id": "noauth-project",
"created_at": "2015-02-23T21:56:33.000000",
"attributes": null,
"ns_records": [
{
"hostname": "ns2.example.org.",
"priority": 1
}
],
"links": {
"self": "http://127.0.0.1:9001/v2/pools/d1716333-8c16-490f-85ee-29af36907605"
},
"name": "example_pool",
"updated_at": null
}
]
}

View File

@ -1,18 +0,0 @@
{
"description": null,
"id": "d1716333-8c16-490f-85ee-29af36907605",
"project_id": "noauth-project",
"created_at": "2015-02-23T21:56:33.000000",
"attributes": null,
"ns_records": [
{
"hostname": "ns2.example.org.",
"priority": 1
}
],
"links": {
"self": "http://127.0.0.1:9001/v2/pools/d1716333-8c16-490f-85ee-29af36907605"
},
"name": "example_pool",
"updated_at": null
}

View File

@ -1,7 +0,0 @@
{
"api_export_size": 1000,
"recordset_records": 20,
"zone_records": 500,
"zone_recordsets": 500,
"zones": 100
}

View File

@ -1,3 +0,0 @@
{
"zones": 500
}

View File

@ -1,7 +0,0 @@
{
"api_export_size": 1000,
"recordset_records": 20,
"zone_records": 500,
"zone_recordsets": 500,
"zones": 500
}

View File

@ -1,12 +0,0 @@
{
"name" : "mail.example.org.",
"description" : "An MX recordset.",
"type" : "MX",
"ttl" : 3600,
"records" : [
"10 mail1.example.org.",
"20 mail2.example.org.",
"30 mail3.example.org.",
"40 mail4.example.org."
]
}

View File

@ -1,23 +0,0 @@
{
"status": "PENDING",
"description": "An MX recordset.",
"links": {
"self": "http://127.0.0.1:9001/v2/zones/f6b472ed-1be8-47e8-87a7-687169cacca8/recordsets/c3c1f506-adcf-4751-ae5b-1c5ff00d2e1a"
},
"created_at": "2016-06-21 06:34:36",
"updated_at": null,
"records": [
"10 mail1.example.org.",
"30 mail3.example.org.",
"20 mail2.example.org.",
"40 mail4.example.org."
],
"zone_id": "f6b472ed-1be8-47e8-87a7-687169cacca8",
"version": 1,
"ttl": 3600,
"action": "CREATE",
"zone_name": "example.org.",
"type": "MX",
"id": "c3c1f506-adcf-4751-ae5b-1c5ff00d2e1a",
"name": "mail.example.org."
}

View File

@ -1,9 +0,0 @@
{
"name" : "example.org.",
"description" : "This is an example record set.",
"type" : "A",
"ttl" : 3600,
"records" : [
"10.1.0.2"
]
}

View File

@ -1,21 +0,0 @@
{
"description": "This is an example record set.",
"links": {
"self": "https://127.0.0.1:9001/v2/zones/2150b1bf-dee2-4221-9d85-11f7886fb15f/recordsets/f7b10e9b-0cae-4a91-b162-562bc6096648"
},
"updated_at": null,
"records": [
"10.1.0.2"
],
"ttl": 3600,
"id": "f7b10e9b-0cae-4a91-b162-562bc6096648",
"name": "example.org.",
"project_id": "4335d1f0-f793-11e2-b778-0800200c9a66",
"zone_id": "2150b1bf-dee2-4221-9d85-11f7886fb15f",
"zone_name": "example.com.",
"created_at": "2014-10-24T19:59:44.000000",
"version": 1,
"type": "A",
"status": "PENDING",
"action": "CREATE"
}

View File

@ -1,10 +0,0 @@
{
"name" : "foospf.example.org.",
"description" : "An SPF recordset.",
"type" : "SPF",
"ttl" : 3600,
"records" : [
"v=spf1 +all"
]
}

View File

@ -1,20 +0,0 @@
{
"status": "PENDING",
"description": "An SPF recordset.",
"links": {
"self": "http://127.0.0.1:9001/v2/zones/f6b472ed-1be8-47e8-87a7-687169cacca8/recordsets/c05a6740-2602-4439-bb70-187dd6547c13"
},
"created_at": "2016-06-21 12:31:44",
"updated_at": null,
"records": [
"v=spf1 +all"
],
"zone_id": "f6b472ed-1be8-47e8-87a7-687169cacca8",
"version": 1,
"ttl": 3600,
"action": "CREATE",
"zone_name": "example.org.",
"type": "SPF",
"id": "c05a6740-2602-4439-bb70-187dd6547c13",
"name": "foospf.example.org."
}

View File

@ -1,9 +0,0 @@
{
"name" : "_http._tcp.example.org.",
"description" : "An SRV recordset.",
"type" : "SRV",
"ttl" : 3600,
"records" : [
"10 0 5060 www.example.org."
]
}

View File

@ -1,20 +0,0 @@
{
"status": "PENDING",
"description": "An SRV recordset.",
"links": {
"self": "http://127.0.0.1:9001/v2/zones/f6b472ed-1be8-47e8-87a7-687169cacca8/recordsets/cc3299b3-c3cd-47e5-9876-8c1d4ad1b88e"
},
"created_at": "2016-06-21 12:44:38",
"updated_at": null,
"records": [
"10 0 5060 www.example.org."
],
"zone_id": "f6b472ed-1be8-47e8-87a7-687169cacca8",
"version": 1,
"ttl": 3600,
"action": "CREATE",
"zone_name": "example.org.",
"type": "SRV",
"id": "cc3299b3-c3cd-47e5-9876-8c1d4ad1b88e",
"name": "_http._tcp.example.org."
}

View File

@ -1,9 +0,0 @@
{
"name" : "foo.example.org.",
"description" : "An SSHFP recordset.",
"type" : "SSHFP",
"ttl" : 3600,
"records" : [
"1 2 6467a09c59607b01fef22ef6918c44a2eaaa14a5e055cfe91bf614b5796d2df0"
]
}

View File

@ -1,20 +0,0 @@
{
"status": "ACTIVE",
"description": null,
"links": {
"self": "http://127.0.0.1:9001/v2/zones/f6b472ed-1be8-47e8-87a7-687169cacca8/recordsets/5fb9d67c-86ac-4ae9-80d5-4c23f7a16b29"
},
"created_at": "2016-06-21 12:15:35",
"updated_at": null,
"records": [
"2 1 75e080122854693164599205f49d7475ed17d09b"
],
"zone_id": "f6b472ed-1be8-47e8-87a7-687169cacca8",
"version": 1,
"ttl": 3600,
"action": "NONE",
"zone_name": "example.org.",
"type": "SSHFP",
"id": "5fb9d67c-86ac-4ae9-80d5-4c23f7a16b29",
"name": "foo.example.org."
}

View File

@ -1,22 +0,0 @@
{
"description": "Updated description",
"links": {
"self": "https://127.0.0.1:9001/v2/zones/2150b1bf-dee2-4221-9d85-11f7886fb15f/recordsets/f7b10e9b-0cae-4a91-b162-562bc6096648"
},
"updated_at": null,
"records": [
"10.1.0.2",
"10.1.0.3",
],
"ttl": null,
"id": "f7b10e9b-0cae-4a91-b162-562bc6096648",
"name": "example.org.",
"project_id": "4335d1f0-f793-11e2-b778-0800200c9a66",
"zone_id": "2150b1bf-dee2-4221-9d85-11f7886fb15f",
"zone_name": "example.com.",
"created_at": "2014-10-24T19:59:44.000000",
"version": 2,
"type": "A",
"status": "PENDING",
"action": "DELETE"
}

View File

@ -1,32 +0,0 @@
{
"recordsets": [
{
"description": "This is an example record set.",
"links": {
"self": "https://127.0.0.1:9001/v2/zones/2150b1bf-dee2-4221-9d85-11f7886fb15f/recordsets/f7b10e9b-0cae-4a91-b162-562bc6096648"
},
"updated_at": null,
"records": [
"10.1.0.2"
],
"ttl": 3600,
"id": "f7b10e9b-0cae-4a91-b162-562bc6096648",
"name": "example.org.",
"project_id": "4335d1f0-f793-11e2-b778-0800200c9a66",
"zone_id": "2150b1bf-dee2-4221-9d85-11f7886fb15f",
"zone_name": "example.com.",
"created_at": "2014-10-24T19:59:44.000000",
"version": 1,
"type": "A",
"status": "PENDING",
"action": "CREATE"
}
],
"links": {
"self": "http://127.0.0.1:9001/v2/recordsets?limit=1",
"next": "http://127.0.0.1:9001/v2/recordsets?limit=1&marker=45fd892d-7a67-4f65-9df0-87273f228d6c"
},
"metadata": {
"total_count": 2
}
}

View File

@ -1,32 +0,0 @@
{
"recordsets": [
{
"description": "This is an example record set.",
"links": {
"self": "https://127.0.0.1:9001/v2/zones/2150b1bf-dee2-4221-9d85-11f7886fb15f/recordsets/f7b10e9b-0cae-4a91-b162-562bc6096648"
},
"updated_at": null,
"records": [
"10.1.0.2"
],
"ttl": 3600,
"id": "f7b10e9b-0cae-4a91-b162-562bc6096648",
"name": "example.org.",
"project_id": "4335d1f0-f793-11e2-b778-0800200c9a66",
"zone_id": "2150b1bf-dee2-4221-9d85-11f7886fb15f",
"zone_name": "example.com.",
"created_at": "2014-10-24T19:59:44.000000",
"version": 1,
"type": "A",
"status": "PENDING",
"action": "CREATE"
}
],
"links": {
"self": "http://127.0.0.1:9001/v2/zones/2150b1bf-dee2-4221-9d85-11f7886fb15f/recordsets?limit=1",
"next": "http://127.0.0.1:9001/v2/zones/2150b1bf-dee2-4221-9d85-11f7886fb15f/recordsets?limit=1&marker=45fd892d-7a67-4f65-9df0-87273f228d6c"
},
"metadata": {
"total_count": 2
}
}

View File

@ -1,21 +0,0 @@
{
"description": "This is an example record set.",
"links": {
"self": "https://127.0.0.1:9001/v2/zones/2150b1bf-dee2-4221-9d85-11f7886fb15f/recordsets/f7b10e9b-0cae-4a91-b162-562bc6096648"
},
"updated_at": null,
"records": [
"10.1.0.2"
],
"ttl": 3600,
"id": "f7b10e9b-0cae-4a91-b162-562bc6096648",
"name": "example.org.",
"project_id": "4335d1f0-f793-11e2-b778-0800200c9a66",
"zone_id": "2150b1bf-dee2-4221-9d85-11f7886fb15f",
"zone_name": "example.com.",
"created_at": "2014-10-24T19:59:44.000000",
"version": 1,
"type": "A",
"status": "ACTIVE",
"action": "NONE"
}

View File

@ -1,8 +0,0 @@
{
"description" : "Updated description",
"ttl" : null,
"records" : [
"10.1.0.2",
"10.1.0.3"
]
}

View File

@ -1,22 +0,0 @@
{
"description": "Updated description",
"links": {
"self": "https://127.0.0.1:9001/v2/zones/2150b1bf-dee2-4221-9d85-11f7886fb15f/recordsets/f7b10e9b-0cae-4a91-b162-562bc6096648"
},
"updated_at": null,
"records": [
"10.1.0.2",
"10.1.0.3"
],
"ttl": null,
"id": "f7b10e9b-0cae-4a91-b162-562bc6096648",
"name": "example.org.",
"project_id": "4335d1f0-f793-11e2-b778-0800200c9a66",
"zone_id": "2150b1bf-dee2-4221-9d85-11f7886fb15f",
"zone_name": "example.com.",
"created_at": "2014-10-24T19:59:44.000000",
"version": 2,
"type": "A",
"status": "PENDING",
"action": "UPDATE"
}

View File

@ -1,31 +0,0 @@
{
"links": {
"self": "http://127.0.0.1:9001/v2/reverse/floatingips"
},
"floatingips": [
{
"status": "ACTIVE",
"ptrdname": "smtp.example.com.",
"description": null,
"links": {
"self": "http://127.0.0.1:9001/v2/reverse/floatingips/RegionOne:c5742ac0-d0f3-4304-a039-9423f727eb96"
},
"ttl": 600,
"address": "172.24.4.10",
"action": "NONE",
"id": "RegionOne:c5742ac0-d0f3-4304-a039-9423f727eb96"
},
{
"status": "ACTIVE",
"ptrdname": "tftp.example.com.",
"description": null,
"links": {
"self": "http://127.0.0.1:9001/v2/reverse/floatingips/RegionOne:9860717d-3da6-43df-a0ec-fa8b0e71ea86"
},
"ttl": 600,
"address": "172.24.4.6",
"action": "NONE",
"id": "RegionOne:9860717d-3da6-43df-a0ec-fa8b0e71ea86"
}
]
}

View File

@ -1,13 +0,0 @@
{
"status": "PENDING",
"ptrdname": "smtp.example.com.",
"description": "This is a floating ip for 127.0.0.1",
"links": {
"self": "http://127.0.0.1:9001/v2/reverse/floatingips/RegionOne:c5742ac0-d0f3-4304-a039-9423f727eb96"
},
"ttl": 600,
"address": "172.24.4.10",
"action": "CREATE",
"id": "RegionOne:c5742ac0-d0f3-4304-a039-9423f727eb96"
}

View File

@ -1,5 +0,0 @@
{
"ptrdname" : "smtp.example.com.",
"description" : "This is a floating ip for 10.0.0.8",
"ttl": 600
}

View File

@ -1,3 +0,0 @@
{
"ptrdname": null
}

View File

@ -1,20 +0,0 @@
{
"service_statuses": [
{
"links": {
"self": "http://127.0.0.1:9001/v2/service_status/af91edb5-ede8-453f-af13-feabdd088f9c"
},
"hostname": "dns-2.example.com.",
"status": "UP",
"service_name": "api",
"stats": null,
"capabilities": null,
"created_at": "2016-05-20 06:15:42",
"heartbeated_at": "2016-07-20 12:14:41",
"id": "af91edb5-ede8-453f-af13-feabdd088f9c"
}
],
"links": {
"self": "http://127.0.0.1:9001/v2/service_status"
}
}

View File

@ -1,4 +0,0 @@
{
"name" : "com",
"description" : "tld description"
}

View File

@ -1,26 +0,0 @@
{
"tlds": [
{
"name": "edu",
"links": {
"self": "http://127.0.0.1:9001/v2/tlds/a7bba387-712b-4b42-9368-4508642c6113"
},
"created_at": "2016-05-10 05:21:40",
"updated_at": null,
"id": "a7bba387-712b-4b42-9368-4508642c6113",
"description": "demo TLD"
},
{
"name": "com",
"links": {
"self": "http://127.0.0.1:9001/v2/tlds/cfee7486-7ce4-4851-9c38-7b0fe3d42ee9"
},
"created_at": "2016-05-18 05:07:58",
"updated_at": null,
"id": "cfee7486-7ce4-4851-9c38-7b0fe3d42ee9",
"description": "tld description"
}
],
"links": {"self": "http://127.0.0.1:9001/v2/tlds"
}
}

View File

@ -1,10 +0,0 @@
{
"name": "com",
"links": {
"self": "http://127.0.0.1:9001/v2/tlds/cfee7486-7ce4-4851-9c38-7b0fe3d42ee9"
},
"created_at": "2016-05-18 05:07:58",
"updated_at": null,
"id": "cfee7486-7ce4-4851-9c38-7b0fe3d42ee9",
"description": "tld description"
}

View File

@ -1,4 +0,0 @@
{
"name" : "org",
"description" : "Updated the name from com to org"
}

View File

@ -1,10 +0,0 @@
{
"name": "org",
"links": {
"self": "http://127.0.0.1:9001/v2/tlds/cfee7486-7ce4-4851-9c38-7b0fe3d42ee9"
},
"created_at": "2016-05-18 05:07:58",
"updated_at": "2016-05-18 05:45:24",
"id": "cfee7486-7ce4-4851-9c38-7b0fe3d42ee9",
"description": "Updated the name from com to org"
}

View File

@ -1,7 +0,0 @@
{
"name": "Example key",
"algorithm": "hmac-sha256",
"secret": "SomeSecretKey",
"scope": "POOL",
"resource_id": "d96851d0-765c-4ee9-bbdf-153345270bd3"
}

View File

@ -1,45 +0,0 @@
{
"tsigkeys": [
{
"links": {
"self": "http://127.0.0.1:9001/v2/tsigkeys/f94d03ca-bd55-4321-8e93-8d363737ab5c"
},
"name": "Example key",
"algorithm": "hmac-sha256",
"resource_id": "5866274f-ee8d-42ee-94f9-29000f040949",
"created_at": "2016-04-19 18:52:54",
"updated_at": null,
"secret": "some secret key",
"scope": "POOL",
"id": "f94d03ca-bd55-4321-8e93-8d363737ab5c"
},
{
"links": {
"self": "http://127.0.0.1:9001/v2/tsigkeys/6bba6f00-dc33-4665-bb37-15f6188bb305"
},
"name": "Example key2",
"algorithm": "hmac-sha256",
"resource_id": "8a5ba22a-347e-4e92-9747-d2c3e67fbb45",
"created_at": "2016-05-19 02:17:54",
"updated_at": null,
"secret": "SomeSecretKey",
"scope": "POOL",
"id": "6bba6f00-dc33-4665-bb37-15f6188bb305"
},
{
"links": {
"self": "http://127.0.0.1:9001/v2/tsigkeys/c429b860-9f68-4e5f-a2ff-65760a64ceaa"
},
"name": "Example key3",
"algorithm": "hmac-sha256",
"resource_id": "d96851d0-765c-4ee9-bbdf-153345270bd3",
"created_at": "2016-05-19 05:52:45",
"updated_at": null,
"secret": "SomeSecretKey", "scope": "POOL",
"id": "c429b860-9f68-4e5f-a2ff-65760a64ceaa"
}
],
"links": {
"self": "http://127.0.0.1:9001/v2/tsigkeys"
}
}

View File

@ -1,13 +0,0 @@
{
"links": {
"self": "http://127.0.0.1:9001/v2/tsigkeys/c429b860-9f68-4e5f-a2ff-65760a64ceaa"
},
"name": "Example key",
"algorithm": "hmac-sha256",
"resource_id": "d96851d0-765c-4ee9-bbdf-153345270bd3",
"created_at": "2016-05-19 05:52:45",
"updated_at": null,
"secret": "SomeSecretKey",
"scope": "POOL",
"id": "c429b860-9f68-4e5f-a2ff-65760a64ceaa"
}

View File

@ -1,4 +0,0 @@
{
"name": "example_tsigkey",
"scope": "ZONE"
}

View File

@ -1,13 +0,0 @@
{
"links": {
"self": "http://127.0.0.1:9001/v2/tsigkeys/c429b860-9f68-4e5f-a2ff-65760a64ceaa"
},
"name": "example_tsigkey",
"algorithm": "hmac-sha256",
"resource_id": "d96851d0-765c-4ee9-bbdf-153345270bd3",
"created_at": "2016-05-19 05:52:45",
"updated_at": "2016-05-19 06:29:14",
"secret": "SomeSecretKey",
"scope": "ZONE",
"id": "c429b860-9f68-4e5f-a2ff-65760a64ceaa"
}

View File

@ -1,26 +0,0 @@
{
"versions": {
"values": [
{
"id": "v1",
"links": [
{
"href": "http://127.0.0.1:9001/v1",
"rel": "self"
}
],
"status": "DEPRECATED"
},
{
"id": "v2",
"links": [
{
"href": "http://127.0.0.1:9001/v2",
"rel": "self"
}
],
"status": "CURRENT"
}
]
}
}

View File

@ -1,14 +0,0 @@
{
"status": "PENDING",
"zone_id": "074e805e-fe87-4cbb-b10b-21a06e215d41",
"links": {
"self": "http://127.0.0.1:9001/v2/zones/tasks/exports/8ec17fe1-d1f9-41b4-aa98-4eeb4c27b720"
},
"created_at": "2015-08-27T20:57:03.000000",
"updated_at": null,
"version": 1,
"location": null,
"message": null,
"project_id": "1",
"id": "8ec17fe1-d1f9-41b4-aa98-4eeb4c27b720"
}

View File

@ -1,13 +0,0 @@
{
"status": "PENDING",
"zone_id": null,
"links": {
"self": "http://127.0.0.1:9001/v2/zones/tasks/imports/074e805e-fe87-4cbb-b10b-21a06e215d41"
},
"created_at": "2015-05-08T15:43:42.000000",
"updated_at": null,
"version": 1,
"message": null,
"project_id": "1",
"id": "074e805e-fe87-4cbb-b10b-21a06e215d41"
}

View File

@ -1,7 +0,0 @@
{
"name": "example.org.",
"email": "joe@example.org",
"type": "PRIMARY",
"ttl": 7200,
"description": "This is an example zone."
}

View File

@ -1,4 +0,0 @@
{
"key":"FUGXMZ5N",
"zone_transfer_request_id":"794fdf58-6e1d-41da-8b2d-16b6d10c8827"
}

View File

@ -1,14 +0,0 @@
{
"status": "COMPLETE",
"zone_id": "b4542f5a-f1ea-4ec1-b850-52db9dc3f465",
"links": {
"self": "http://10.0.4.46:9001/v2/zones/tasks/transfer_accepts/fe8c30f5-42f6-4af1-8cbf-e31a810d8c33",
"zone": "http://10.0.4.46:9001/v2/zones/b4542f5a-f1ea-4ec1-b850-52db9dc3f465"
},
"created_at": "2016-06-22 06:13:55",
"updated_at": "null",
"key": "FUGXMZ5N",
"project_id": "2e43de7ce3504a8fb90a45382532c37e",
"id": "fe8c30f5-42f6-4af1-8cbf-e31a810d8c33",
"zone_transfer_request_id": "794fdf58-6e1d-41da-8b2d-16b6d10c8827"
}

View File

@ -1,3 +0,0 @@
{
"project_id": "1"
}

View File

@ -1,15 +0,0 @@
{
"created_at": "2014-07-17T20:34:40.882579",
"description": null,
"id": "f2ad17b5-807a-423f-a991-e06236c247be",
"key": "9Z2R50Y0",
"project_id": "1",
"status": "ACTIVE",
"target_project_id": "123456",
"updated_at": null,
"zone_id": "6b78734a-aef1-45cd-9708-8eb3c2d26ff8",
"zone_name": "qa.dev.example.com.",
"links": {
"self": "http://127.0.0.1:9001/v2/zones/tasks/transfer_requests/f2ad17b5-807a-423f-a991-e06236c247be"
}
}

View File

@ -1,21 +0,0 @@
{
"id": "a86dba58-0043-4cc6-a1bb-69d5e86f3ca3",
"pool_id": "572ba08c-d929-4c70-8e42-03824bb24ca2",
"project_id": "4335d1f0-f793-11e2-b778-0800200c9a66",
"name": "example.org.",
"email": "joe@example.org",
"ttl": 600,
"serial": 1404757531,
"status": "PENDING",
"action": "DELETE",
"description": "Updated Description",
"masters": [],
"type": "PRIMARY",
"transferred_at": null,
"version": 1,
"created_at": "2014-07-07T18:25:31.275934",
"updated_at": null,
"links": {
"self": "https://127.0.0.1:9001/v2/zones/a86dba58-0043-4cc6-a1bb-69d5e86f3ca3"
}
}

View File

@ -1,26 +0,0 @@
{
"exports": [
{
"status": "COMPLETE",
"zone_id": "17a8d6b3-6ace-4857-b113-a707c5f975b1",
"links": {
"self": "http://127.0.0.1:9001/v2/zones/tasks/exports/204be410-0a9c-44b8-839e-bc4df3bb0d9a",
"export": "http://127.0.0.1:9001/v2/zones/tasks/exports/204be410-0a9c-44b8-839e-bc4df3bb0d9a/export"
},
"created_at": "2016-04-04T01:53:29.000000",
"updated_at": "2016-04-04T01:53:29.000000",
"version": 2,
"location": "designate://v2/zones/tasks/exports/204be410-0a9c-44b8-839e-bc4df3bb0d9a/export",
"message": null,
"project_id": "1de6e2fdc22342d3bef6340c7b70f497",
"id": "204be410-0a9c-44b8-839e-bc4df3bb0d9a"
}
],
"links": {
"self": "http://127.0.0.1:9001/v2/zones/tasks/exports"
},
"metadata": {
"total_count": 1
}
}

View File

@ -1,38 +0,0 @@
{
"imports": [
{
"status": "COMPLETE",
"zone_id": "047888ee-e9dd-4c08-8b44-ab2e879e01bd",
"links": {
"self": "http://127.0.0.1:9001/v2/zones/tasks/imports/0436a86e-ffc1-4d38-82a7-d75170fcd2a9",
"href": "http://127.0.0.1:9001/v2/zones/047888ee-e9dd-4c08-8b44-ab2e879e01bd"
},
"created_at": "2016-04-05T06:03:06.000000",
"updated_at": "2016-04-05T06:03:06.000000",
"version": 2,
"message": "example.com. imported",
"project_id": "1de6e2fdc22342d3bef6340c7b70f497",
"id": "0436a86e-ffc1-4d38-82a7-d75170fcd2a9"
},
{
"status": "COMPLETE",
"zone_id": "68a17870-7f81-470a-b5e9-2753460fd6dc",
"links": {
"self": "http://127.0.0.1:9001/v2/zones/tasks/imports/f0aa4ac1-f975-46a4-b417-339acd1ea8e3",
"href": "http://127.0.0.1:9001/v2/zones/68a17870-7f81-470a-b5e9-2753460fd6dc"
},
"created_at": "2016-04-05T06:06:26.000000",
"updated_at": "2016-04-05T06:06:26.000000",
"version": 2,
"message": "temp.org. imported",
"project_id": "1de6e2fdc22342d3bef6340c7b70f497",
"id": "f0aa4ac1-f975-46a4-b417-339acd1ea8e3"
}
],
"links": {
"self": "http://127.0.0.1:9001/v2/zones/tasks/imports"
},
"metadata": {
"total_count": 2
}
}

View File

@ -1,37 +0,0 @@
{
"metadata": {
"total_count": 2
},
"links": {
"self": "http://127.0.0.1:9001/v2/zones/tasks/transfer_accepts"
},
"transfer_accepts": [{
"status": "COMPLETE",
"zone_id": "8db93d1a-59e3-4143-a393-5821abea0a46",
"links": {
"self": "http://127.0.0.1:9001/v2/zones/tasks/transfer_accepts/afb4222b-18b3-44b3-9f54-e0dfdba1be44",
"zone": "http://127.0.0.1:9001/v2/zones/8db93d1a-59e3-4143-a393-5821abea0a46"
},
"created_at": "2016-06-01 05:35:35",
"updated_at": "2016-06-01 05:35:35",
"key": null,
"project_id": "85604ecfb5334b50bd40ca53fc1d710f",
"id": "afb4222b-18b3-44b3-9f54-e0dfdba1be44",
"zone_transfer_request_id": "d223f7ef-77a6-459e-abd3-b4dbc97338e7"
},
{
"status": "COMPLETE",
"zone_id": "925bfc45-8901-4aca-aa12-18afaf0879e2",
"links": {
"self": "http://127.0.0.1:9001/v2/zones/tasks/transfer_accepts/ecbc7091-c498-4ec4-9893-68b06297fe50",
"zone": "http://127.0.0.1:9001/v2/zones/925bfc45-8901-4aca-aa12-18afaf0879e2"
},
"created_at": "2016-06-01 10:06:36",
"updated_at": "2016-06-01 10:06:37",
"key": null,
"project_id": "85604ecfb5334b50bd40ca53fc1d710f",
"id": "ecbc7091-c498-4ec4-9893-68b06297fe50",
"zone_transfer_request_id": "94cf9bd3-4137-430b-bf75-4e690430258c"
}
]
}

View File

@ -1,32 +0,0 @@
{
"transfer_requests": [
{
"created_at": "2014-07-17T20:34:40.882579",
"description": "This was created by the requesting project",
"id": "f2ad17b5-807a-423f-a991-e06236c247be",
"key": "9Z2R50Y0",
"project_id": "1",
"status": "ACTIVE",
"target_project_id": "123456",
"updated_at": null,
"zone_id": "6b78734a-aef1-45cd-9708-8eb3c2d26ff8",
"zone_name": "qa.dev.example.com.",
"links": {
"self": "http://127.0.0.1:9001/v2/zones/tasks/transfer_requests/f2ad17b5-807a-423f-a991-e06236c247be"
}
},
{
"description": "This is scoped to the requesting project",
"id": "efd2d720-b0c4-43d4-99f7-d9b53e08860d",
"zone_id": "2c4d5e37-f823-4bee-9859-031cb44f80e7",
"zone_name": "subdomain.example.com.",
"status": "ACTIVE",
"links": {
"self": "http://127.0.0.1:9001/v2/zones/tasks/transfer_requests/efd2d720-b0c4-43d4-99f7-d9b53e08860d"
}
}
],
"links": {
"self": "http://127.0.0.1:9001/v2/zones/tasks/transfer_requests"
}
}

View File

@ -1,32 +0,0 @@
{
"zones": [
{
"id": "a86dba58-0043-4cc6-a1bb-69d5e86f3ca3",
"pool_id": "572ba08c-d929-4c70-8e42-03824bb24ca2",
"project_id": "4335d1f0-f793-11e2-b778-0800200c9a66",
"name": "example.org.",
"email": "joe@example.org",
"ttl": 7200,
"serial": 1404757531,
"status": "ACTIVE",
"action": "CREATE",
"description": "This is an example zone.",
"masters": [],
"type": "PRIMARY",
"transferred_at": null,
"version": 1,
"created_at": "2014-07-07T18:25:31.275934",
"updated_at": null,
"links": {
"self": "https://127.0.0.1:9001/v2/zones/a86dba58-0043-4cc6-a1bb-69d5e86f3ca3"
}
}
],
"links": {
"self": "http://127.0.0.1:9001/v2/zones?limit=1",
"next": "http://127.0.0.1:9001/v2/zones?limit=1&marker=45fd892d-7a67-4f65-9df0-87273f228d6c"
},
"metadata": {
"total_count": 2
}
}

View File

@ -1,18 +0,0 @@
$ORIGIN example.com.
$TTL 42
example.com. IN SOA ns.designate.com. nsadmin.example.com. (
1394213803 ; serial
3600 ; refresh
600 ; retry
86400 ; expire
3600 ; minimum
)
example.com. IN NS ns.designate.com.
example.com. IN MX 10 mail.example.com.
ns.example.com. IN A 10.0.0.1
mail.example.com. IN A 10.0.0.2

View File

@ -1,15 +0,0 @@
{
"status": "COMPLETE",
"zone_id": "6625198b-d67d-47dc-8d29-f90bd60f3ac4",
"links": {
"self": "http://127.0.0.1:9001/v2/zones/tasks/exports/8ec17fe1-d1f9-41b4-aa98-4eeb4c27b720",
"export": "http://127.0.0.1:9001/v2/zones/tasks/exports/8ec17fe1-d1f9-41b4-aa98-4eeb4c27b720/export"
},
"created_at": "2015-08-27T20:57:03.000000",
"updated_at": "2015-08-27T20:57:03.000000",
"version": 2,
"location": "designate://v2/zones/tasks/exports/8ec17fe1-d1f9-41b4-aa98-4eeb4c27b720/export",
"message": null,
"project_id": "noauth-project",
"id": "8ec17fe1-d1f9-41b4-aa98-4eeb4c27b720"
}

View File

@ -1,14 +0,0 @@
{
"status": "COMPLETE",
"zone_id": "6625198b-d67d-47dc-8d29-f90bd60f3ac4",
"links": {
"self": "http://127.0.0.1:9001/v2/zones/tasks/imports/074e805e-fe87-4cbb-b10b-21a06e215d41",
"href": "http://127.0.0.1:9001/v2/zones/6625198b-d67d-47dc-8d29-f90bd60f3ac4"
},
"created_at": "2015-05-08T15:43:42.000000",
"updated_at": "2015-05-08T15:43:42.000000",
"version": 2,
"message": "example.com. imported",
"project_id": "noauth-project",
"id": "074e805e-fe87-4cbb-b10b-21a06e215d41"
}

View File

@ -1,8 +0,0 @@
{
"nameservers": [
{
"hostname": "ns1.example.com.",
"priority": 10
}
]
}

View File

@ -1,10 +0,0 @@
{
"description": "This is scoped to the requesting project",
"id": "efd2d720-b0c4-43d4-99f7-d9b53e08860d",
"zone_id": "2c4d5e37-f823-4bee-9859-031cb44f80e7",
"zone_name": "subdomain.example.com.",
"status": "ACTIVE",
"links": {
"self": "http://127.0.0.1:9001/v2/zones/tasks/transfer_requests/efd2d720-b0c4-43d4-99f7-d9b53e08860d"
}
}

View File

@ -1,4 +0,0 @@
{
"ttl": 600,
"description": "Updated Description"
}

View File

@ -1,21 +0,0 @@
{
"id": "a86dba58-0043-4cc6-a1bb-69d5e86f3ca3",
"pool_id": "572ba08c-d929-4c70-8e42-03824bb24ca2",
"project_id": "4335d1f0-f793-11e2-b778-0800200c9a66",
"name": "example.org.",
"email": "joe@example.org",
"ttl": 600,
"serial": 1404757531,
"status": "PENDING",
"action": "UPDATE",
"description": "Updated Description",
"masters": [],
"type": "PRIMARY",
"transferred_at": null,
"version": 1,
"created_at": "2014-07-07T18:25:31.275934",
"updated_at": null,
"links": {
"self": "https://127.0.0.1:9001/v2/zones/a86dba58-0043-4cc6-a1bb-69d5e86f3ca3"
}
}

View File

@ -1,4 +0,0 @@
{
"description": "This is scoped to the new project",
"target_project_id": "987654"
}

View File

@ -1,11 +0,0 @@
{
"description": "This is scoped to the new project",
"target_project_id": "987654",
"id": "efd2d720-b0c4-43d4-99f7-d9b53e08860d",
"zone_id": "2c4d5e37-f823-4bee-9859-031cb44f80e7",
"zone_name": "subdomain.example.com.",
"status": "ACTIVE",
"links": {
"self": "http://127.0.0.1:9001/v2/zones/tasks/transfer_requests/efd2d720-b0c4-43d4-99f7-d9b53e08860d"
}
}

View File

@ -1,21 +0,0 @@
{
"id": "a86dba58-0043-4cc6-a1bb-69d5e86f3ca3",
"pool_id": "572ba08c-d929-4c70-8e42-03824bb24ca2",
"project_id": "4335d1f0-f793-11e2-b778-0800200c9a66",
"name": "example.org.",
"email": "joe@example.org",
"ttl": 7200,
"serial": 1404757531,
"status": "ACTIVE",
"action": "CREATE",
"description": "This is an example zone.",
"masters": [],
"type": "PRIMARY",
"transferred_at": null,
"version": 1,
"created_at": "2014-07-07T18:25:31.275934",
"updated_at": null,
"links": {
"self": "https://127.0.0.1:9001/v2/zones/a86dba58-0043-4cc6-a1bb-69d5e86f3ca3"
}
}

View File

@ -1,56 +0,0 @@
200:
default: |
Request was successful.
image-data-200: |
The service lists the image data in the response body.
201:
default: |
Request has been fulfilled and new resource created.
202:
default: |
Request is accepted, but processing may take some time.
203:
default: |
Returned information is not full set, but a subset.
204:
default: |
Request fulfilled but service does not return anything.
300:
default: |
The resource corresponds to more than one representation.
400:
default: |
Some content in the request was invalid.
401:
default: |
User must authenticate before making a request.
403:
default: |
Policy does not allow current user to do this operation.
404:
default: |
The requested resource could not be found.
405:
default: |
Method is not valid for this endpoint and resource.
409:
default: |
This resource has an action in progress that would conflict with this request.
413:
default: |
This operation cannot be completed.
415:
default: |
The entity of the request is in a format not supported by the requested
resource for the method.
500:
default: |
Something went wrong with the service which prevents it from fulfilling
the request.
501:
default: |
The service does not have the functionality required to fulfill this
request.
503:
default: |
The service cannot handle the request right now.

View File

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

View File

@ -1,432 +0,0 @@
# Copyright 2014 Red Hat, Inc.
#
# Author: Rich Megginson <rmeggins@redhat.com>
#
# 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 pprint
import time
import requests
from oslo_config import cfg
from oslo_log import log as logging
from oslo_serialization import jsonutils as json
from oslo_utils import importutils
from designate import exceptions
from designate.backend import base
from designate.i18n import _LE
LOG = logging.getLogger(__name__)
IPA_DEFAULT_PORT = 443
class IPABaseError(exceptions.Backend):
error_code = 500
error_type = 'unknown_ipa_error'
class IPAAuthError(IPABaseError):
error_type = 'authentication_error'
# map of designate domain parameters to the corresponding
# ipa parameter
# NOTE: ipa manages serial, and does not honor
# increment_serial=False - this means the designate serial
# and the ipa serial will diverge if updates are made
# using increment_serial=False
domain2ipa = {'ttl': 'dnsttl', 'email': 'idnssoarname',
'serial': 'idnssoaserial', 'expire': 'idnssoaexpire',
'minimum': 'idnssoaminimum', 'refresh': 'idnssoarefresh',
'retry': 'idnssoaretry'}
# map of designate record types to ipa
rectype2iparectype = {'A': ('arecord', '%(data)s'),
'AAAA': ('aaaarecord', '%(data)s'),
'MX': ('mxrecord', '%(data)s'),
'CNAME': ('cnamerecord', '%(data)s'),
'TXT': ('txtrecord', '%(data)s'),
'SRV': ('srvrecord', '%(data)s'),
'NS': ('nsrecord', '%(data)s'),
'PTR': ('ptrrecord', '%(data)s'),
'SPF': ('spfrecord', '%(data)s'),
'SSHFP': ('sshfprecord', '%(data)s')}
IPA_INVALID_DATA = 3009
IPA_NOT_FOUND = 4001
IPA_DUPLICATE = 4002
IPA_NO_CHANGES = 4202
class IPAUnknownError(IPABaseError):
pass
class IPACommunicationFailure(IPABaseError):
error_type = 'communication_failure'
pass
class IPAInvalidData(IPABaseError):
error_type = 'invalid_data'
pass
class IPADomainNotFound(IPABaseError):
error_type = 'domain_not_found'
pass
class IPARecordNotFound(IPABaseError):
error_type = 'record_not_found'
pass
class IPADuplicateDomain(IPABaseError):
error_type = 'duplicate_domain'
pass
class IPADuplicateRecord(IPABaseError):
error_type = 'duplicate_record'
pass
ipaerror2exception = {
IPA_INVALID_DATA: {
'dnszone': IPAInvalidData,
'dnsrecord': IPAInvalidData
},
IPA_NOT_FOUND: {
'dnszone': IPADomainNotFound,
'dnsrecord': IPARecordNotFound
},
IPA_DUPLICATE: {
'dnszone': IPADuplicateDomain,
'dnsrecord': IPADuplicateRecord
},
# NOTE: Designate will send updates with all fields
# even if they have not changed value. If none of
# the given values has changed, IPA will return
# this error code - this can be ignored
IPA_NO_CHANGES: {
'dnszone': None,
'dnsrecord': None
}
}
def abs2rel_name(domain, rsetname):
"""convert rsetname from absolute form foo.bar.tld. to the name
relative to the domain. For IPA, if domain is rsetname, then use
"@" as the relative name. If rsetname does not end with a subset
of the domain, the just return the raw rsetname
"""
if rsetname.endswith(domain):
idx = rsetname.rfind(domain)
if idx == 0:
rsetname = "@"
elif idx > 0:
rsetname = rsetname[:idx].rstrip(".")
return rsetname
class IPABackend(base.Backend):
__plugin_name__ = 'ipa'
@classmethod
def get_cfg_opts(cls):
group = cfg.OptGroup(
name='backend:ipa', title="Configuration for IPA Backend"
)
opts = [
cfg.StrOpt('ipa-host', default='localhost.localdomain',
help='IPA RPC listener host - must be FQDN'),
cfg.IntOpt('ipa-port', default=IPA_DEFAULT_PORT,
help='IPA RPC listener port'),
cfg.StrOpt('ipa-client-keytab',
help='Kerberos client keytab file'),
cfg.StrOpt('ipa-auth-driver-class',
default='designate.backend.impl_ipa.auth.IPAAuth',
help='Class that implements the authentication '
'driver for IPA'),
cfg.StrOpt('ipa-ca-cert',
help='CA certificate for use with https to IPA'),
cfg.StrOpt('ipa-base-url', default='/ipa',
help='Base URL for IPA RPC, relative to host[:port]'),
cfg.StrOpt('ipa-json-url',
default='/json',
help='URL for IPA JSON RPC, relative to IPA base URL'),
cfg.IntOpt('ipa-connect-retries', default=1,
help='How many times Designate will attempt to retry '
'the connection to IPA before giving up'),
cfg.BoolOpt('ipa-force-ns-use', default=False,
help='IPA requires that a specified '
'name server or SOA MNAME is resolvable - if this '
'option is set, Designate will force IPA to use a '
'given name server even if it is not resolvable'),
cfg.StrOpt('ipa-version', default='2.65',
help='IPA RPC JSON version')
]
return [(group, opts)]
def start(self):
LOG.debug('IPABackend start')
self.request = requests.Session()
authclassname = cfg.CONF[self.name].ipa_auth_driver_class
authclass = importutils.import_class(authclassname)
self.request.auth = \
authclass(cfg.CONF[self.name].ipa_client_keytab,
cfg.CONF[self.name].ipa_host)
ipa_base_url = cfg.CONF[self.name].ipa_base_url
if ipa_base_url.startswith("http"): # full URL
self.baseurl = ipa_base_url
else: # assume relative to https://host[:port]
self.baseurl = "https://" + cfg.CONF[self.name].ipa_host
ipa_port = cfg.CONF[self.name].ipa_port
if ipa_port != IPA_DEFAULT_PORT:
self.baseurl += ":" + str(ipa_port)
self.baseurl += ipa_base_url
ipa_json_url = cfg.CONF[self.name].ipa_json_url
if ipa_json_url.startswith("http"): # full URL
self.jsonurl = ipa_json_url
else: # assume relative to https://host[:port]
self.jsonurl = self.baseurl + ipa_json_url
xtra_hdrs = {'Content-Type': 'application/json',
'Referer': self.baseurl}
self.request.headers.update(xtra_hdrs)
self.request.verify = cfg.CONF[self.name].ipa_ca_cert
self.ntries = cfg.CONF[self.name].ipa_connect_retries
self.force = cfg.CONF[self.name].ipa_force_ns_use
def create_zone(self, context, zone):
LOG.debug('Create Zone %r' % zone)
ipareq = {'method': 'dnszone_add', 'id': 0}
params = [zone['name']]
servers = self.central_service.get_zone_ns_records(self.admin_context)
# just use the first one for zone creation - add the others
# later, below - use force because designate assumes the NS
# already exists somewhere, is resolvable, and already has
# an A/AAAA record
args = {'idnssoamname': servers[0]['name']}
if self.force:
args['force'] = True
for dkey, ipakey in list(domain2ipa.items()):
if dkey in zone:
args[ipakey] = zone[dkey]
ipareq['params'] = [params, args]
self._call_and_handle_error(ipareq)
# add NS records for all of the other servers
if len(servers) > 1:
ipareq = {'method': 'dnsrecord_add', 'id': 0}
params = [zone['name'], "@"]
args = {'nsrecord': servers[1:]}
if self.force:
args['force'] = True
ipareq['params'] = [params, args]
self._call_and_handle_error(ipareq)
def update_zone(self, context, zone):
LOG.debug('Update Zone %r' % zone)
ipareq = {'method': 'dnszone_mod', 'id': 0}
params = [zone['name']]
args = {}
for dkey, ipakey in list(domain2ipa.items()):
if dkey in zone:
args[ipakey] = zone[dkey]
ipareq['params'] = [params, args]
self._call_and_handle_error(ipareq)
def delete_zone(self, context, zone):
LOG.debug('Delete Zone %r' % zone)
ipareq = {'method': 'dnszone_del', 'id': 0}
params = [zone['name']]
args = {}
ipareq['params'] = [params, args]
self._call_and_handle_error(ipareq)
def create_recordset(self, context, domain, recordset):
LOG.debug('Discarding create_recordset call, not-applicable')
def update_recordset(self, context, domain, recordset):
LOG.debug('Update RecordSet %r / %r' % (domain, recordset))
# designate allows to update a recordset if there are no
# records in it - we should ignore this case
if not self._recset_has_records(context, recordset):
LOG.debug('No records in %r / %r - skipping' % (domain, recordset))
return
# The only thing IPA allows is to change the ttl, since that is
# stored "per recordset"
if 'ttl' not in recordset:
return
ipareq = {'method': 'dnsrecord_mod', 'id': 0}
dname = domain['name']
rsetname = abs2rel_name(dname, recordset['name'])
params = [domain['name'], rsetname]
args = {'dnsttl': recordset['ttl']}
ipareq['params'] = [params, args]
self._call_and_handle_error(ipareq)
def delete_recordset(self, context, domain, recordset):
LOG.debug('Delete RecordSet %r / %r' % (domain, recordset))
# designate allows to delete a recordset if there are no
# records in it - we should ignore this case
if not self._recset_has_records(context, recordset):
LOG.debug('No records in %r / %r - skipping' % (domain, recordset))
return
ipareq = {'method': 'dnsrecord_mod', 'id': 0}
dname = domain['name']
rsetname = abs2rel_name(dname, recordset['name'])
params = [domain['name'], rsetname]
rsettype = rectype2iparectype[recordset['type']][0]
args = {rsettype: None}
ipareq['params'] = [params, args]
self._call_and_handle_error(ipareq)
def create_record(self, context, domain, recordset, record):
LOG.debug('Create Record %r / %r / %r' % (domain, recordset, record))
ipareq = {'method': 'dnsrecord_add', 'id': 0}
params, args = self._rec_to_ipa_rec(domain, recordset, [record])
ipareq['params'] = [params, args]
self._call_and_handle_error(ipareq)
def update_record(self, context, domain, recordset, record):
LOG.debug('Update Record %r / %r / %r' % (domain, recordset, record))
# for modify operations - IPA does not support a way to change
# a particular field in a given record - e.g. for an MX record
# with several values, IPA stores them like this:
# name: "server1.local."
# data: ["10 mx1.server1.local.", "20 mx2.server1.local."]
# we could do a search of IPA, compare the values in the
# returned array - but that adds an additional round trip
# and is error prone
# instead, we just get all of the current values and send
# them in one big modify
criteria = {'recordset_id': record['recordset_id']}
reclist = self.central_service.find_records(self.admin_context,
criteria)
ipareq = {'method': 'dnsrecord_mod', 'id': 0}
params, args = self._rec_to_ipa_rec(domain, recordset, reclist)
ipareq['params'] = [params, args]
self._call_and_handle_error(ipareq)
def delete_record(self, context, domain, recordset, record):
LOG.debug('Delete Record %r / %r / %r' % (domain, recordset, record))
ipareq = {'method': 'dnsrecord_del', 'id': 0}
params, args = self._rec_to_ipa_rec(domain, recordset, [record])
args['del_all'] = 0
ipareq['params'] = [params, args]
self._call_and_handle_error(ipareq)
def ping(self, context):
LOG.debug('Ping')
# NOTE: This call will cause ipa to issue an error, but
# 1) it should not throw an exception
# 2) the response will indicate ipa is running
# 3) the bandwidth usage is minimal
ipareq = {'method': 'dnszone_show', 'id': 0}
params = ['@']
args = {}
ipareq['params'] = [params, args]
retval = {'result': True}
try:
self._call_and_handle_error(ipareq)
except Exception as e:
retval = {'result': False, 'reason': str(e)}
return retval
def _rec_to_ipa_rec(self, domain, recordset, reclist):
dname = domain['name']
rsetname = abs2rel_name(dname, recordset['name'])
params = [dname, rsetname]
rectype = recordset['type']
vals = []
for record in reclist:
vals.append(rectype2iparectype[rectype][1] % record)
args = {rectype2iparectype[rectype][0]: vals}
ttl = recordset.get('ttl') or domain.get('ttl')
if ttl is not None:
args['dnsttl'] = ttl
return params, args
def _ipa_error_to_exception(self, resp, ipareq):
exc = None
if resp['error'] is None:
return exc
errcode = resp['error']['code']
method = ipareq['method']
methtype = method.split('_')[0]
exclass = ipaerror2exception.get(errcode, {}).get(methtype,
IPAUnknownError)
if exclass:
LOG.debug("Error: ipa command [%s] returned error [%s]" %
(pprint.pformat(ipareq), pprint.pformat(resp)))
elif errcode: # not mapped
LOG.debug("Ignoring IPA error code %d: %s" %
(errcode, pprint.pformat(resp)))
return exclass
def _call_and_handle_error(self, ipareq):
if 'version' not in ipareq['params'][1]:
ipareq['params'][1]['version'] = cfg.CONF[self.name].ipa_version
need_reauth = False
while True:
status_code = 200
try:
if need_reauth:
self.request.auth.refresh_auth()
rawresp = self.request.post(self.jsonurl,
data=json.dumps(ipareq))
status_code = rawresp.status_code
except IPAAuthError:
status_code = 401
if status_code == 401:
if self.ntries == 0:
# persistent inability to auth
LOG.error(_LE("Error: could not authenticate to IPA - "
"please check for correct keytab file"))
# reset for next time
self.ntries = cfg.CONF[self.name].ipa_connect_retries
raise IPACommunicationFailure()
else:
LOG.debug("Refresh authentication")
need_reauth = True
self.ntries -= 1
time.sleep(1)
else:
# successful - reset
self.ntries = cfg.CONF[self.name].ipa_connect_retries
break
try:
resp = json.loads(rawresp.text)
except ValueError:
# response was not json - some sort of error response
LOG.debug("Error: unknown error from IPA [%s]" % rawresp.text)
raise IPAUnknownError("unable to process response from IPA")
# raise the appropriate exception, if error
exclass = self._ipa_error_to_exception(resp, ipareq)
if exclass:
# could add additional info/message to exception here
raise exclass()
return resp
def _recset_has_records(self, context, recordset):
"""Return True if the recordset has records, False otherwise"""
criteria = {'recordset_id': recordset['id']}
num = self.central_service.count_records(self.admin_context,
criteria)
return num > 0

View File

@ -1,62 +0,0 @@
# Copyright 2014 Red Hat, Inc.
#
# Author: Rich Megginson <rmeggins@redhat.com>
#
# 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 logging
from requests import auth
import kerberos
from designate.utils import generate_uuid
from designate.backend.impl_ipa import IPAAuthError
from designate.i18n import _LW
from designate.i18n import _LE
LOG = logging.getLogger(__name__)
class IPAAuth(auth.AuthBase):
def __init__(self, keytab, hostname):
# store the kerberos credentials in memory rather than on disk
os.environ['KRB5CCNAME'] = "MEMORY:" + generate_uuid()
self.token = None
self.keytab = keytab
self.hostname = hostname
if self.keytab:
os.environ['KRB5_CLIENT_KTNAME'] = self.keytab
else:
LOG.warning(_LW('No IPA client kerberos keytab file given'))
def __call__(self, request):
if not self.token:
self.refresh_auth()
request.headers['Authorization'] = 'negotiate ' + self.token
return request
def refresh_auth(self):
service = "HTTP@" + self.hostname
flags = kerberos.GSS_C_MUTUAL_FLAG | kerberos.GSS_C_SEQUENCE_FLAG
try:
(_, vc) = kerberos.authGSSClientInit(service, flags)
except kerberos.GSSError as e:
LOG.error(_LE("caught kerberos exception %r") % e)
raise IPAAuthError(str(e))
try:
kerberos.authGSSClientStep(vc, "")
except kerberos.GSSError as e:
LOG.error(_LE("caught kerberos exception %r") % e)
raise IPAAuthError(str(e))
self.token = kerberos.authGSSClientResponse(vc)

View File

@ -1,153 +0,0 @@
# Copyright (C) 2013 eNovance SAS <licensing@enovance.com>
#
# Author: Artom Lifshitz <artom.lifshitz@enovance.com>
#
# 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 logging
from oslo_config import cfg
from oslo_utils import excutils
from designate import backend
from designate.backend import base
LOG = logging.getLogger(__name__)
CFG_GROUP = 'backend:multi'
class MultiBackend(base.Backend):
"""
Multi-backend backend
This backend dispatches calls to a master backend and a slave backend.
It enforces master/slave ordering semantics as follows:
Creates for tsigkeys, servers and domains are done on the master first,
then on the slave.
Updates for tsigkeys, servers and domains and all operations on records
are done on the master only. It's assumed masters and slaves use an
external mechanism to sync existing domains, most likely XFR.
Deletes are done on the slave first, then on the master.
If the create on the slave fails, the domain/tsigkey/server is deleted from
the master. If delete on the master fails, the domain/tdigkey/server is
recreated on the slave.
"""
__plugin_name__ = 'multi'
@classmethod
def get_cfg_opts(cls):
group = cfg.OptGroup(
name=CFG_GROUP, title="Configuration for multi-backend Backend"
)
opts = [
cfg.StrOpt('master', default='fake', help='Master backend'),
cfg.StrOpt('slave', default='fake', help='Slave backend'),
]
return [(group, opts)]
def __init__(self, central_service):
super(MultiBackend, self).__init__(central_service)
self.central = central_service
self.master = backend.get_backend(cfg.CONF[CFG_GROUP].master,
central_service)
self.slave = backend.get_backend(cfg.CONF[CFG_GROUP].slave,
central_service)
def start(self):
self.master.start()
self.slave.start()
def stop(self):
self.slave.stop()
self.master.stop()
def create_tsigkey(self, context, tsigkey):
self.master.create_tsigkey(context, tsigkey)
try:
self.slave.create_tsigkey(context, tsigkey)
except Exception:
with excutils.save_and_reraise_exception():
self.master.delete_tsigkey(context, tsigkey)
def update_tsigkey(self, context, tsigkey):
self.master.update_tsigkey(context, tsigkey)
def delete_tsigkey(self, context, tsigkey):
self.slave.delete_tsigkey(context, tsigkey)
try:
self.master.delete_tsigkey(context, tsigkey)
except Exception:
with excutils.save_and_reraise_exception():
self.slave.create_tsigkey(context, tsigkey)
def create_zone(self, context, zone):
self.master.create_zone(context, zone)
try:
self.slave.create_zone(context, zone)
except Exception:
with excutils.save_and_reraise_exception():
self.master.delete_zone(context, zone)
def update_zone(self, context, zone):
self.master.update_zone(context, zone)
def delete_zone(self, context, zone):
# Fetch the full zone from Central first, as we may
# have to recreate it on slave if delete on master fails
deleted_context = context.deepcopy()
deleted_context.show_deleted = True
full_domain = self.central.find_zone(
deleted_context, {'id': zone['id']})
self.slave.delete_zone(context, zone)
try:
self.master.delete_zone(context, zone)
except Exception:
with excutils.save_and_reraise_exception():
self.slave.create_zone(context, zone)
[self.slave.create_record(context, zone, record)
for record in self.central.find_records(
context, {'domain_id': full_domain['id']})]
def create_recordset(self, context, zone, recordset):
self.master.create_recordset(context, zone, recordset)
def update_recordset(self, context, zone, recordset):
self.master.update_recordset(context, zone, recordset)
def delete_recordset(self, context, zone, recordset):
self.master.delete_recordset(context, zone, recordset)
def create_record(self, context, zone, recordset, record):
self.master.create_record(context, zone, recordset, record)
def update_record(self, context, zone, recordset, record):
self.master.update_record(context, zone, recordset, record)
def delete_record(self, context, zone, recordset, record):
self.master.delete_record(context, zone, recordset, record)
def ping(self, context):
return {
'master': self.master.ping(context),
'slave': self.slave.ping(context)
}

View File

@ -1,39 +0,0 @@
# Copyright 2016 Rackspace, Inc.
#
# Author: Tim Simmons <tim.simmons@rackspace.com>
#
# 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.
"""
This dumb script allows you to see what's being dumped onto
the notifications.info queue
nabbed from:
https://pika.readthedocs.io/en/latest/examples/blocking_consume.html
"""
import pika
def on_message(channel, method_frame, header_frame, body):
print(method_frame.delivery_tag)
print(body)
channel.basic_ack(delivery_tag=method_frame.delivery_tag)
connection = pika.BlockingConnection()
channel = connection.channel()
channel.basic_consume(on_message, 'notifications.info')
try:
channel.start_consuming()
except KeyboardInterrupt:
channel.stop_consuming()
connection.close()

View File

@ -1,22 +0,0 @@
*.pyc
*.dat
TAGS
*.egg
*.egg-info
build
.coverage
.tox
cover
venv
.venv
*.sublime-workspace
*.sqlite
var/*
etc/*.conf
etc/*.ini
AUTHORS
ChangeLog
doc/source/api/*
doc/build/*
dist
designate_ext_samplehandler/versioninfo

View File

@ -1,11 +0,0 @@
include AUTHORS
include ChangeLog
include designate_ext_samplehandler/versioninfo
include *.txt *.ini *.cfg *.rst *.md
exclude .gitignore
exclude .gitreview
exclude *.sublime-project
global-exclude *.pyc

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