Browse Source

Retire Karbor

As announced on the openstack-discuss ML[1], Karbor is retiring
this cycle (Wallaby).

This commit retires this repository as per the process defined in
the project-guide[2].

Thank you to all the contributors of Karbor for your hard work!

[1] http://lists.openstack.org/pipermail/openstack-discuss/2020-November/018643.html
[2] https://docs.openstack.org/project-team-guide/repository.html#retiring-a-repository

Depends-On: https://review.opendev.org/c/openstack/project-config/+/767030
Change-Id: I972ffb299f93863c4e34b1f504b002095661e6af
changes/32/767032/2
Kendall Nelson 8 months ago
parent
commit
353f75eca0
  1. 7
      .coveragerc
  2. 16
      .gitattributes
  3. 54
      .gitignore
  4. 3
      .mailmap
  5. 3
      .stestr.conf
  6. 7
      .testr.conf
  7. 62
      .zuul.yaml
  8. 15
      CONTRIBUTING.rst
  9. 4
      HACKING.rst
  10. 176
      LICENSE
  11. 86
      README.rst
  12. 208
      api-ref/source/conf.py
  13. 17
      api-ref/source/index.rst
  14. 17
      api-ref/source/v1/index.rst
  15. 271
      api-ref/source/v1/karbor-v1-checkpoints.inc
  16. 136
      api-ref/source/v1/karbor-v1-operation-logs.inc
  17. 268
      api-ref/source/v1/karbor-v1-plans.inc
  18. 192
      api-ref/source/v1/karbor-v1-protectables.inc
  19. 109
      api-ref/source/v1/karbor-v1-providers.inc
  20. 193
      api-ref/source/v1/karbor-v1-restores.inc
  21. 204
      api-ref/source/v1/karbor-v1-scheduled-operations.inc
  22. 115
      api-ref/source/v1/karbor-v1-services.inc
  23. 245
      api-ref/source/v1/karbor-v1-triggers.inc
  24. 185
      api-ref/source/v1/karbor-v1-verifications.inc
  25. 690
      api-ref/source/v1/parameters.yaml
  26. 9
      api-ref/source/v1/samples/checkpoint-create-request.json
  27. 35
      api-ref/source/v1/samples/checkpoint-create-response.json
  28. 1
      api-ref/source/v1/samples/checkpoint-delete-response.json
  29. 1
      api-ref/source/v1/samples/checkpoint-reset-state-response.json
  30. 43
      api-ref/source/v1/samples/checkpoints-list-response.json
  31. 16
      api-ref/source/v1/samples/operation-log-show-response.json
  32. 48
      api-ref/source/v1/samples/operation-logs-list-response.json
  33. 48
      api-ref/source/v1/samples/plan-create-request.json
  34. 50
      api-ref/source/v1/samples/plan-create-response.json
  35. 6
      api-ref/source/v1/samples/plan-update-request.json
  36. 50
      api-ref/source/v1/samples/plan-update-response.json
  37. 58
      api-ref/source/v1/samples/plans-list-response.json
  38. 14
      api-ref/source/v1/samples/protectable-instance-show-response.json
  39. 26
      api-ref/source/v1/samples/protectable-instances-list-response.json
  40. 9
      api-ref/source/v1/samples/protectable-show-response.json
  41. 8
      api-ref/source/v1/samples/protectables-list-response.json
  42. 60
      api-ref/source/v1/samples/provider-show-response.json
  43. 68
      api-ref/source/v1/samples/providers-list-response.json
  44. 18
      api-ref/source/v1/samples/restore-create-request.json
  45. 27
      api-ref/source/v1/samples/restore-create-response.json
  46. 36
      api-ref/source/v1/samples/restores-list-response.json
  47. 11
      api-ref/source/v1/samples/scheduled-operation-create-request.json
  48. 13
      api-ref/source/v1/samples/scheduled-operation-create-response.json
  49. 22
      api-ref/source/v1/samples/scheduled-operations-list-response.json
  50. 27
      api-ref/source/v1/samples/services-list-response.json
  51. 4
      api-ref/source/v1/samples/services-update-request.json
  52. 11
      api-ref/source/v1/samples/services-update-response.json
  53. 12
      api-ref/source/v1/samples/trigger-create-request.json
  54. 13
      api-ref/source/v1/samples/trigger-create-response.json
  55. 11
      api-ref/source/v1/samples/trigger-update-request.json
  56. 13
      api-ref/source/v1/samples/trigger-update-response.json
  57. 22
      api-ref/source/v1/samples/triggers-list-response.json
  58. 12
      api-ref/source/v1/samples/verification-create-response.json
  59. 25
      api-ref/source/v1/samples/verifications-list-response.json
  60. 62
      api-ref/source/v1/status.yaml
  61. 2
      babel.cfg
  62. 62
      devstack/devstackgaterc
  63. 26
      devstack/files/apache-karbor-api.template
  64. 44
      devstack/local.conf.sample
  65. 272
      devstack/plugin.sh
  66. 24
      devstack/providers.d/eisoo.conf
  67. 14
      devstack/providers.d/openstack-fs-bank.conf
  68. 20
      devstack/providers.d/openstack-infra-volume-snapshot.conf
  69. 23
      devstack/providers.d/openstack-s3-bank.conf
  70. 42
      devstack/settings
  71. BIN
      doc/images/3-tier-app.png
  72. BIN
      doc/images/Karbor.png
  73. BIN
      doc/images/KarborInPieces.png
  74. BIN
      doc/images/api-service-class-diagram.png
  75. 57
      doc/images/available_protectables.svg
  76. 208
      doc/images/class_diagram.svg
  77. BIN
      doc/images/high_level_architecture.png
  78. BIN
      doc/images/karbor-api.png
  79. BIN
      doc/images/mascot/OpenStack_Project_Karbor_Horizontal.png
  80. BIN
      doc/images/mascot/OpenStack_Project_Karbor_horizontal.eps
  81. BIN
      doc/images/mascot/OpenStack_Project_Karbor_horizontal_1color.eps
  82. BIN
      doc/images/mascot/OpenStack_Project_Karbor_mascot.png
  83. BIN
      doc/images/mascot/OpenStack_Project_Karbor_mascot_small.png
  84. BIN
      doc/images/mascot/OpenStack_Project_Karbor_vertical.eps
  85. BIN
      doc/images/mascot/OpenStack_Project_Karbor_vertical.png
  86. BIN
      doc/images/mascot/OpenStack_Project_Karbor_vertical_1color.eps
  87. BIN
      doc/images/operation-engine/create_scheduled_operation_seq_diagram.png
  88. BIN
      doc/images/operation-engine/delete_scheduled_operation_seq_diagram.png
  89. BIN
      doc/images/operation-engine/operation_engine_architecture_diagram.png
  90. BIN
      doc/images/operation-engine/operation_engine_class_diagram.png
  91. BIN
      doc/images/operation-engine/operation_state_diagram.png
  92. 1
      doc/images/pluggable_protection_provider.svg
  93. BIN
      doc/images/protection-service/class-diagram.png
  94. BIN
      doc/images/protection-service/class_diagram.png
  95. BIN
      doc/images/protection-service/hooks.png
  96. BIN
      doc/images/protection-service/protect-rpc-call-seq-diagram.png
  97. BIN
      doc/images/protection-service/protection-architecture.png
  98. BIN
      doc/images/protection-service/restore-processing-sequence-flow.png
  99. BIN
      doc/images/protection_provider.png
  100. BIN
      doc/images/resource_tree_architecture.png

7
.coveragerc

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

16
.gitattributes

@ -1,16 +0,0 @@
*.py text eol=lf
*.txt text eol=lf
*.yaml text eol=lf
*.sh text eol=lf
*.conf text eol=lf
*.ini text eol=lf
*.cfg text eol=lf
*.json text eol=lf
*.pu text eol=lf
*.md text eol=lf
*.svg text eol=lf
*.inc text eol=lf
*.png binary
*.jpg binary
*.jpeg binary

54
.gitignore

@ -1,54 +0,0 @@
*.py[cod]
# C extensions
*.so
# Packages
*.egg
*.egg-info
dist
build
.eggs
eggs
parts
bin
var
sdist
develop-eggs
.installed.cfg
lib
lib64
# Installer logs
pip-log.txt
# Unit test / coverage reports
.coverage
.tox
nosetests.xml
.testrepository
.venv
.log
!.stestr.conf
# Translations
*.mo
# Complexity
output/*.html
output/*/index.html
# Sphinx
doc/build
doc/source/contributor/api
# pbr generates these
AUTHORS
ChangeLog
# Editors
*~
.*.swp
.*sw?
releasenotes/build
etc/karbor.conf.sample

3
.mailmap

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

3
.stestr.conf

@ -1,3 +0,0 @@
[DEFAULT]
test_path=${OS_TEST_PATH:-./karbor/tests/unit}
top_dir=./

7
.testr.conf

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

62
.zuul.yaml

@ -1,62 +0,0 @@
- project:
templates:
- openstack-cover-jobs
- openstack-lower-constraints-jobs
- check-requirements
- openstack-python3-victoria-jobs
- publish-openstack-docs-pti
check:
jobs:
- karbor-fullstack:
voting: false
- job:
name: karbor-fullstack
parent: devstack-tox-functional
timeout: 7800
required-projects:
- opendev.org/openstack/karbor
- opendev.org/openstack/python-karborclient
- opendev.org/openstack/trove
- opendev.org/openstack/trove-dashboard
- opendev.org/openstack/manila
- opendev.org/openstack/manila-tempest-plugin
vars:
devstack_plugins:
karbor: https://opendev.org/openstack/karbor
manila: https://opendev.org/openstack/manila
tox_envlist: fullstack
devstack_localrc:
API_WORKERS: 4
VOLUME_BACKING_FILE_SIZE: 20490M
MANILA_OPTGROUP_generic1_driver_handles_share_servers: False
MANILA_USE_SERVICE_INSTANCE_PASSWORD: True
MANILA_DEFAULT_SHARE_TYPE_EXTRA_SPECS: 'snapshot_support=True create_share_from_snapshot_support=True mount_snapshot_support=True driver_handles_share_servers=False'
SHARE_DRIVER: manila.share.drivers.lvm.LVMShareDriver
SWIFT_HASH: 66a3d6b56c1f479c8b4e70ab5c2000f5
SWIFT_REPLICAS: 1
SWIFT_LOOPBACK_DISK_SIZE: 10G
DATABASE_PASSWORD: password
RABBIT_PASSWORD: password
SERVICE_PASSWORD: password
SERVICE_TOKEN: password
ADMIN_PASSWORD: password
devstack_local_conf:
test-config:
$SWIFT_CONFIG_PROXY_SERVER:
DEFAULT:
workers: 4
$CINDER_CONF:
DEFAULT:
osapi_volume_workers: 8
rpc_response_timeout: 120
$KARBOR_API_CONF:
DEFAULT:
max_window_time: 150
min_window_time: 75
min_interval: 300
devstack_services:
tls-proxy: false
karbor-api: True
karbor-protection: True
karbor-operationengine: True

15
CONTRIBUTING.rst

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

4
HACKING.rst

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

176
LICENSE

@ -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.

86
README.rst

@ -1,81 +1,11 @@
========================
Team and repository tags
========================
This project is no longer maintained.
.. image:: https://governance.openstack.org/tc/badges/karbor.svg
:target: https://governance.openstack.org/tc/reference/tags/index.html
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".
.. Change things from this point on
======
Karbor
======
Application Data Protection as a Service for OpenStack
.. image:: https://raw.githubusercontent.com/openstack/karbor/master/doc/images/mascot/OpenStack_Project_Karbor_vertical.png
:alt: Karbor
:width: 300
:height: 525
:align: center
*****************
Mission Statement
*****************
To protect the Data and Metadata that comprises an OpenStack-deployed
Application against loss/damage (e.g. backup, replication) by providing a
standard framework of APIs and services that allows vendors to provide plugins
through a unified interface
Open Architecture
"""""""""""""""""
Design for multiple perspectives:
* User: Protect App Deployment
* Configure and manage custom protection plans on the deployed resources
(topology, VMs, volumes, images, ...)
* Admin: Define Protectable Resources
* Decide what plugins protect which resources, what is available for the user
* Decide where users can protect their resources
* Vendors: Standard API for protection products
* Create plugins that implement Protection mechanisms for different OpenStack
resources
*****
Links
*****
* Free software: Apache license
* Wiki: https://wiki.openstack.org/wiki/Karbor
* Documentation: https://docs.openstack.org/karbor/latest/
* Admin guide: https://docs.openstack.org/karbor/latest/admin/index.html
* Source: https://opendev.org/openstack/karbor
* Bugs: https://storyboard.openstack.org/#!/project/openstack/karbor
* Release notes: https://docs.openstack.org/karbor/latest/releasenotes.html
********
Features
********
Version 0.1
"""""""""""
* Resource API
* Plan API
* Bank API
* Ledger API
* Cross-resource dependencies
Limitations
***********
* Only 1 Bank plugin per Protection Plan
* Automatic object discovery not supported
For any further questions, please email
openstack-discuss@lists.openstack.org or join #openstack-dev on
Freenode.

208
api-ref/source/conf.py

@ -1,208 +0,0 @@
# -*- coding: utf-8 -*-
#
# 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.
#
# karbor documentation build configuration file, created by
# sphinx-quickstart on Mon Sep 19 15:17:47 2016.
#
# 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 sys
# 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.
extensions = [
'openstackdocstheme',
'os_api_ref'
]
# 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'Data Protection API Reference'
copyright = u'OpenStack Foundation'
repository_name = 'openstack/karbor'
bug_project = 'karbor'
bug_tag = 'api-ref'
# 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'
html_theme = 'openstackdocs'
html_theme_options = {
"sidebar_mode": "toc",
}
# 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 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 = 'karbordoc'
# -- 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', 'karbor.tex', u'OpenStack Data Protection 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

17
api-ref/source/index.rst

@ -1,17 +0,0 @@
===================
Data Protection API
===================
Contents:
.. toctree::
:maxdepth: 1
v1/index
Indices and tables
==================
* :ref:`genindex`
* :ref:`search`

17
api-ref/source/v1/index.rst

@ -1,17 +0,0 @@
:tocdepth: 2
======================
Data Protection API V1
======================
.. rest_expand_all::
.. include:: karbor-v1-protectables.inc
.. include:: karbor-v1-providers.inc
.. include:: karbor-v1-plans.inc
.. include:: karbor-v1-triggers.inc
.. include:: karbor-v1-scheduled-operations.inc
.. include:: karbor-v1-checkpoints.inc
.. include:: karbor-v1-restores.inc
.. include:: karbor-v1-operation-logs.inc
.. include:: karbor-v1-services.inc

271
api-ref/source/v1/karbor-v1-checkpoints.inc

@ -1,271 +0,0 @@
.. -*- rst -*-
===========
Checkpoints
===========
This API enables the Karbor user to access and manage the checkpoints stored in
the protection provider:
- List all checkpoints given a Bank ID.
- Show Information on a given checkpoint ID.
- Delete a checkpoint.
- Create a checkpoint.
When you perform the above operation, these status values are possible:
+-----------------+----------------------------------------------------------+
| Status | Description |
+=================+==========================================================+
| error | A checkpoint creation error occurred. |
+-----------------+----------------------------------------------------------+
| protecting | The checkpoint is being created. |
+-----------------+----------------------------------------------------------+
| available | The checkpoint is created, and available. |
+-----------------+----------------------------------------------------------+
| deleting | The checkpoint is being deleted. |
+-----------------+----------------------------------------------------------+
| deleted | The checkpoint is deleted. |
+-----------------+----------------------------------------------------------+
| error-deleting | A checkpoint deletion error occurred. |
+-----------------+----------------------------------------------------------+
List checkpoints
================
.. rest_method:: GET /v1/{tenant_id}/providers/{provider_id}/checkpoints
List all the checkpoints offered at the given provider, or part of checkpoints
limited by ``?limit={limit_num}`` by ``GET`` method.
Response Codes
--------------
.. rest_status_code:: success status.yaml
- 200
.. rest_status_code:: error status.yaml
- 401
- 403
Request
-------
.. rest_parameters:: parameters.yaml
- tenant_id: tenant_id
- provider_id: provider_id_1
- sort: sort
- limit: limit
- marker: marker
Response
--------
.. rest_parameters:: parameters.yaml
- X-Openstack-Request-Id: request_id
- checkpoints: checkpoint_list
- id: checkpoint_id
- project_id: tenant_id_1
- status: checkpoint_status
- protection_plan: plan
- resource_graph: resource_graph
- checkpoints_links: links
Response Example
----------------
.. literalinclude:: ./samples/checkpoints-list-response.json
:language: javascript
Create checkpoint
=================
.. rest_method:: POST /v1/{tenant_id}/providers/{provider_id}/checkpoints
Execute the protect operation for the specified plan and create a checkpoint
at a given provider.
Response Codes
--------------
.. rest_status_code:: success status.yaml
- 200
.. rest_status_code:: error status.yaml
- 401
- 403
Request
-------
.. rest_parameters:: parameters.yaml
- tenant_id: tenant_id
- provider_id: provider_id_1
- checkpoint: checkpoint
- plan_id: plan_id
- extra_info: extra_info
Request Example
---------------
.. literalinclude:: ./samples/checkpoint-create-request.json
:language: javascript
Response
--------
.. rest_parameters:: parameters.yaml
- X-Openstack-Request-Id: request_id
- checkpoint: checkpoint
- id: checkpoint_id
- project_id: tenant_id_1
- status: checkpoint_status
- protection_plan: plan
- resource_graph: resource_graph
Response Example
----------------
.. literalinclude:: ./samples/checkpoint-create-response.json
:language: javascript
Show checkpoint
===============
.. rest_method:: GET /v1/{tenant_id}/providers/{provider_id}/checkpoints/{checkpoint_id}
Shows the information about the specified checkpoint offered at a given
provider.
Response Codes
--------------
.. rest_status_code:: success status.yaml
- 200
.. rest_status_code:: error status.yaml
- 401
- 403
Request
-------
.. rest_parameters:: parameters.yaml
- tenant_id: tenant_id
- provider_id: provider_id_1
- checkpoint_id: checkpoint_id_1
Response
--------
.. rest_parameters:: parameters.yaml
- X-Openstack-Request-Id: request_id
- checkpoint: checkpoint
- id: checkpoint_id
- project_id: tenant_id_1
- status: checkpoint_status
- protection_plan: plan
- resource_graph: resource_graph
Response Example
----------------
.. literalinclude:: ./samples/checkpoint-create-response.json
:language: javascript
Delete checkpoint
=================
.. rest_method:: DELETE /v1/{tenant_id}/providers/{provider_id}/checkpoints/{checkpoint_id}
Deletes a specific checkpoint.
Response Codes
--------------
.. rest_status_code:: success status.yaml
- 200
.. rest_status_code:: error status.yaml
- 401
- 403
Request
-------
.. rest_parameters:: parameters.yaml
- tenant_id: tenant_id
- provider_id: provider_id_1
- checkpoint_id: checkpoint_id_1
Response
--------
Empty dict
Response Example
----------------
.. literalinclude:: ./samples/checkpoint-delete-response.json
:language: javascript
Update checkpoint
=================
.. rest_method:: PUT /v1/{tenant_id}/providers/{provider_id}/checkpoints/{checkpoint_id}
Updates a specific checkpoint.
Response Codes
--------------
.. rest_status_code:: success status.yaml
- 200
.. rest_status_code:: error status.yaml
- 401
- 403
Request
-------
.. rest_parameters:: parameters.yaml
- tenant_id: tenant_id
- provider_id: provider_id_1
- checkpoint_id: checkpoint_id_1
- os-resetState: os-resetState
- os-resetState.state: state
Response
--------
Empty dict
Response Example
----------------
.. literalinclude:: ./samples/checkpoint-reset-state-response.json
:language: javascript

136
api-ref/source/v1/karbor-v1-operation-logs.inc

@ -1,136 +0,0 @@
.. -*- rst -*-
==============
Operation logs
==============
This API enables the Karbor user get the information about operation logs:
- List all operation logs by a given project.
- Show the information of a given operation log.
When you perform the above operation, these status values are possible:
+-----------------+----------------------------------------------------------+
| Status | Description |
+=================+==========================================================+
| available | A protect operation is finished. |
+-----------------+----------------------------------------------------------+
| success | A restore operation is success. |
+-----------------+----------------------------------------------------------+
| deleted | A delete operation is finished. |
+-----------------+----------------------------------------------------------+
List operation logs
===================
.. rest_method:: GET /v1/{tenant_id}/operation_logs
List all operation logs, triggered by a given project, or part of the operation
logs limited by ``?limit={limit_num}`` by ``GET`` method.
Response Codes
--------------
.. rest_status_code:: success status.yaml
- 200
.. rest_status_code:: error status.yaml
- 401
- 403
Request
-------
.. rest_parameters:: parameters.yaml
- tenant_id: tenant_id
- sort: sort
- limit: limit
- marker: marker
Response
--------
.. rest_parameters:: parameters.yaml
- X-Openstack-Request-Id: request_id
- operation_logs: operation_log_list
- id: operation_log_id
- project_id: tenant_id_1
- operation_type: operation_type
- checkpoint_id: checkpoint_id_2
- plan_id: plan_id_1
- provider_id: provider_id_2
- restore_id: restore_id_2
- scheduled_operation_id: operation_id_2
- status: operation_log_status
- started_at: started_at
- ended_at: ended_at
- error_info: error_info
- extra_info: extra_info
- operation_logs_links: links
Response Example
----------------
.. literalinclude:: ./samples/operation-logs-list-response.json
:language: javascript
Show operation log
==================
.. rest_method:: GET /v1/{tenant_id}/operation_logs/{operation_log_id}
Show the information of a given operation log.
Response Codes
--------------
.. rest_status_code:: success status.yaml
- 200
.. rest_status_code:: error status.yaml
- 401
- 403
Request
-------
.. rest_parameters:: parameters.yaml
- tenant_id: tenant_id
- operation_log_id: operation_log_id_1
Response
--------
.. rest_parameters:: parameters.yaml
- X-Openstack-Request-Id: request_id
- operation_log: operation_log
- id: operation_log_id
- project_id: tenant_id_1
- operation_type: operation_type_1
- checkpoint_id: checkpoint_id_2
- plan_id: plan_id_1
- provider_id: provider_id_2
- restore_id: restore_id_2
- scheduled_operation_id: operation_id_2
- status: operation_log_status
- started_at: started_at
- ended_at: ended_at
- error_info: error_info
- extra_info: extra_info_1
Response Example
----------------
.. literalinclude:: ./samples/operation-log-show-response.json
:language: javascript

268
api-ref/source/v1/karbor-v1-plans.inc

@ -1,268 +0,0 @@
.. -*- rst -*-
=====
Plans
=====
This API enables the Karbor user to access the protection Plan registry and do
the following operations:
- Plan CRUD.
- List Plans.
- Starting and suspending of plans.
When you perform the above operation, these status values are possible:
+-----------------+----------------------------------------------------------+
| Status | Description |
+=================+==========================================================+
| started | A plan is updated. |
+-----------------+----------------------------------------------------------+
| suspended | A plan is created. |
+-----------------+----------------------------------------------------------+
List plans
==========
.. rest_method:: GET /v1/{tenant_id}/plans
List all the protection plans offered for the given project, or part of the
protection plans limited by ``?limit={limit_num}`` by ``GET`` method.
Response Codes
--------------
.. rest_status_code:: success status.yaml
- 200
.. rest_status_code:: error status.yaml
- 401
- 403
Request
-------
.. rest_parameters:: parameters.yaml
- tenant_id: tenant_id
- sort: sort
- limit: limit
- marker: marker
Response
--------
.. rest_parameters:: parameters.yaml
- X-Openstack-Request-Id: request_id
- plans: plan_list
- id: plan_id
- name: plan_name
- resources: resources
- status: plan_status
- provider_id: provider_id
- parameters: plan_parameters
- plans_links: links
Response Example
----------------
.. literalinclude:: ./samples/plans-list-response.json
:language: javascript
Create plan
===========
.. rest_method:: POST /v1/{tenant_id}/plans
Create a new plan.
To specify the parameters for this plan, include the parameters
in the ``parameters`` attribute in the request body.
Response Codes
--------------
.. rest_status_code:: success status.yaml
- 200
.. rest_status_code:: error status.yaml
- 401
- 403
Request
-------
.. rest_parameters:: parameters.yaml
- tenant_id: tenant_id
- plan: plan
- name: plan_name
- resources: resources
- provider_id: provider_id
- parameters: plan_parameters
Request Example
---------------
.. literalinclude:: ./samples/plan-create-request.json
:language: javascript
Response
--------
.. rest_parameters:: parameters.yaml
- X-Openstack-Request-Id: request_id
- plan: plan
- id: plan_id
- name: plan_name
- resources: resources
- status: plan_status
- provider_id: provider_id
- parameters: plan_parameters
Response Example
----------------
.. literalinclude:: ./samples/plan-create-response.json
:language: javascript
Show plan
=========
.. rest_method:: GET /v1/{tenant_id}/plans/{plan_id}
Shows the information about a specific plan.
Response Codes
--------------
.. rest_status_code:: success status.yaml
- 200
.. rest_status_code:: error status.yaml
- 401
- 403
Request
-------
.. rest_parameters:: parameters.yaml
- tenant_id: tenant_id
- plan_id: plan_id
Response
--------
.. rest_parameters:: parameters.yaml
- X-Openstack-Request-Id: request_id
- plan: plan
- id: plan_id
- name: plan_name
- resources: resources
- status: plan_status
- provider_id: provider_id
- parameters: plan_parameters
Response Example
----------------
.. literalinclude:: ./samples/plan-create-response.json
:language: javascript
Update plan
===========
.. rest_method:: PUT /v1/{tenant_id}/plans/{plan_id}
Updates a specific plan.
Response Codes
--------------
.. rest_status_code:: success status.yaml
- 200
.. rest_status_code:: error status.yaml
- 401
- 403
Request
-------
.. rest_parameters:: parameters.yaml
- tenant_id: tenant_id
- plan_id: plan_id
- plan: plan
- name: plan_name_1
- resources: resources_1
- status: plan_status_1
Request Example
---------------
.. literalinclude:: ./samples/plan-update-request.json
:language: javascript
Response
--------
.. rest_parameters:: parameters.yaml
- X-Openstack-Request-Id: request_id
- plan: plan
- id: plan_id
- name: plan_name
- resources: resources
- status: plan_status
- provider_id: provider_id
- parameters: plan_parameters
Response Example
----------------
.. literalinclude:: ./samples/plan-update-response.json
:language: javascript
Delete plan
===========
.. rest_method:: DELETE /v1/{tenant_id}/plans/{plan_id}
Deletes a specific plan.
Response Codes
--------------
.. rest_status_code:: success status.yaml
- 200
.. rest_status_code:: error status.yaml
- 202
Request
-------
.. rest_parameters:: parameters.yaml
- tenant_id: tenant_id
- plan_id: plan_id

192
api-ref/source/v1/karbor-v1-protectables.inc

@ -1,192 +0,0 @@
.. -*- rst -*-
============
Protectables
============
Enables the Karbor user to access information about which resource types are
protectable (i.e. can be protected by Karbor). In addition, enables the user
to get additional information on each resource type, such as a list of actual
instances and their dependencies.
List protectable types
======================
.. rest_method:: GET /v1/{tenant_id}/protectables
Lists all the available protectable types.
Response Codes
--------------
.. rest_status_code:: success status.yaml
- 200
.. rest_status_code:: error status.yaml
- 401
- 403
Request
-------
.. rest_parameters:: parameters.yaml
- tenant_id: tenant_id
- sort: sort
- limit: limit
- marker: marker
Response
--------
.. rest_parameters:: parameters.yaml
- X-Openstack-Request-Id: request_id
- protectable_type: protectable_type
Response Example
----------------
.. literalinclude:: ./samples/protectables-list-response.json
:language: javascript
Show protectable type
=====================
.. rest_method:: GET /v1/{tenant_id}/protectables/{protectable_type}
Shows the information of a given protectable type.
Response Codes
--------------
.. rest_status_code:: success status.yaml
- 200
.. rest_status_code:: error status.yaml
- 401
- 403
Request
-------
.. rest_parameters:: parameters.yaml
- tenant_id: tenant_id
- protectable_type: protectable_type_1
Response
--------
.. rest_parameters:: parameters.yaml
- X-Openstack-Request-Id: request_id
- protectable_type: protectable_type_2
- name: protectable_name
- dependent_types: dependent_types
Response Example
----------------
.. literalinclude:: ./samples/protectable-show-response.json
:language: javascript
List protectable instances
==========================
.. rest_method:: GET /v1/{tenant_id}/protectables/{protectable_type}/instances
List all the available instances for the given protectable type.
Response Codes
--------------
.. rest_status_code:: success status.yaml
- 200
.. rest_status_code:: error status.yaml
- 401
- 403
Request
-------
.. rest_parameters:: parameters.yaml
- tenant_id: tenant_id
- protectable_type: protectable_type_1
Response
--------
.. rest_parameters:: parameters.yaml
- X-Openstack-Request-Id: request_id
- instances: protectable_instance_list
- id: protectable_instance_id
- type: protectable_type_3
- name: protectable_instance_name
- dependent_resources: dependent_resources
- instances_links: links
Response Example
----------------
.. literalinclude:: ./samples/protectable-instances-list-response.json
:language: javascript
Show protectable instance
=========================
.. rest_method:: GET /v1/{tenant_id}/protectables/{protectable_type}/instances/{resource_id}
Show the information about a specific instance and its immediate dependencies.
Response Codes
--------------
.. rest_status_code:: success status.yaml
- 200
.. rest_status_code:: error status.yaml
- 401
- 403
Request
-------
.. rest_parameters:: parameters.yaml
- tenant_id: tenant_id
- protectable_type: protectable_type_1
- resource_id: resource_id
Response
--------
.. rest_parameters:: parameters.yaml
- X-Openstack-Request-Id: request_id
- instance: protectable_instance
- id: protectable_instance_id
- type: protectable_type_3
- name: protectable_instance_name
- dependent_resources: dependent_resources
Response Example
----------------
.. literalinclude:: ./samples/protectable-instance-show-response.json
:language: javascript

109
api-ref/source/v1/karbor-v1-providers.inc

@ -1,109 +0,0 @@
.. -*- rst -*-
=========
Providers
=========
Enables the Karbor user to list available providers and get parameters and
result schema super-set for all plugins of a specific Provider.
List protection providers
=========================
.. rest_method:: GET /v1/{tenant_id}/providers
List all the information about the providers offered at a given service, or
part of the providers limited by ``?limit={limit_num}`` by ``GET`` method.
All providers need to be configured first by the admin.
Response Codes
------</