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
@ -1,7 +0,0 @@
|
||||
[run]
|
||||
branch = True
|
||||
source = karbor
|
||||
omit = karbor/tests/*
|
||||
|
||||
[report]
|
||||
ignore_errors = True
|
16
.gitattributes
vendored
@ -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
vendored
@ -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>
|
@ -1,3 +0,0 @@
|
||||
[DEFAULT]
|
||||
test_path=${OS_TEST_PATH:-./karbor/tests/unit}
|
||||
top_dir=./
|
@ -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
|
@ -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
|
@ -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
|
||||
|
||||
.. 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
|
||||
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".
|
||||
|
||||
|
||||
*****************
|
||||
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.
|
||||
|
@ -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
|
@ -1,17 +0,0 @@
|
||||
===================
|
||||
Data Protection API
|
||||
===================
|
||||
|
||||
Contents:
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
v1/index
|
||||
|
||||
|
||||
Indices and tables
|
||||
==================
|
||||
|
||||
* :ref:`genindex`
|
||||
* :ref:`search`
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
||||
--------------
|
||||
|
||||
.. 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
|
||||
- providers: provider_list
|
||||
- id: provider_id
|
||||
- name: provider_name
|
||||
- description: description
|
||||
- extended_info_schema: schema_extended_info
|
||||
- saved_info_schema: schema_saved_info
|
||||
- restore_schema: schema_restore
|
||||
- providers_links: links
|
||||
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: ./samples/providers-list-response.json
|
||||
:language: javascript
|
||||
|
||||
|
||||
Show protection provider
|
||||
========================
|
||||
|
||||
.. rest_method:: GET /v1/{tenant_id}/providers/{provider_id}
|
||||
|
||||
Shows the information about a specific 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
|
||||
|
||||
Response
|
||||
--------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- X-Openstack-Request-Id: request_id
|
||||
- provider: provider
|
||||
- id: provider_id
|
||||
- name: provider_name
|
||||
- description: description
|
||||
- extended_info_schema: schema_extended_info
|
||||
- saved_info_schema: schema_saved_info
|
||||
- restore_schema: schema_restore
|
||||
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: ./samples/provider-show-response.json
|
||||
:language: javascript
|
@ -1,193 +0,0 @@
|
||||
.. -*- rst -*-
|
||||
|
||||
========
|
||||
Restores
|
||||
========
|
||||
|
||||
This API enables the Karbor user restore a checkpoint on to a restore target:
|
||||
|
||||
- List all restores by a given project.
|
||||
- Create restored system from a checkpoint.
|
||||
- Show the information of a given restore operation.
|
||||
|
||||
When you perform the above operation, these status values are possible:
|
||||
|
||||
+-----------------+----------------------------------------------------------+
|
||||
| Status | Description |
|
||||
+=================+==========================================================+
|
||||
| started | A restore operation is in progress. |
|
||||
+-----------------+----------------------------------------------------------+
|
||||
| success | A restore operation is success. |
|
||||
+-----------------+----------------------------------------------------------+
|
||||
| failed | A restore operation is failed. |
|
||||
+-----------------+----------------------------------------------------------+
|
||||
|
||||
|
||||
List restores
|
||||
=============
|
||||
|
||||
.. rest_method:: GET /v1/{tenant_id}/restores
|
||||
|
||||
List all restores started, success or failed, triggered by a 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
|
||||
- restores: restore_list
|
||||
- id: restore_id
|
||||
- project_id: tenant_id_1
|
||||
- provider_id: provider_id
|
||||
- checkpoint_id: checkpoint_id
|
||||
- restore_target: restore_target
|
||||
- parameters: restore_parameters
|
||||
- status: restore_status
|
||||
- resource_status: restore_resource_status
|
||||
- resource_reason: restore_resource_reason
|
||||
- restores_links: links
|
||||
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: ./samples/restores-list-response.json
|
||||
:language: javascript
|
||||
|
||||
|
||||
Create restore
|
||||
==============
|
||||
|
||||
.. rest_method:: POST /v1/{tenant_id}/restores
|
||||
|
||||
Start a restore operation.
|
||||
|
||||
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
|
||||
- restore: restore
|
||||
- provider_id: provider_id
|
||||
- checkpoint_id: checkpoint_id
|
||||
- restore_target: restore_target
|
||||
- restore_auth: restore_auth
|
||||
- parameters: restore_parameters
|
||||
|
||||
Request Example
|
||||
---------------
|
||||
|
||||
.. literalinclude:: ./samples/restore-create-request.json
|
||||
:language: javascript
|
||||
|
||||
Response
|
||||
--------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- X-Openstack-Request-Id: request_id
|
||||
- restore: restore
|
||||
- id: restore_id
|
||||
- project_id: tenant_id_1
|
||||
- provider_id: provider_id
|
||||
- checkpoint_id: checkpoint_id
|
||||
- restore_target: restore_target
|
||||
- restore_auth: restore_auth
|
||||
- parameters: restore_parameters
|
||||
- status: restore_status
|
||||
- resource_status: restore_resource_status
|
||||
- resource_reason: restore_resource_reason
|
||||
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: ./samples/restore-create-response.json
|
||||
:language: javascript
|
||||
|
||||
|
||||
Show restore
|
||||
============
|
||||
|
||||
.. rest_method:: GET /v1/{tenant_id}/restores/{restore_id}
|
||||
|
||||
Show the information of a given restore operation.
|
||||
|
||||
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
|
||||
- restore_id: restore_id_1
|
||||
|
||||
Response
|
||||
--------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- X-Openstack-Request-Id: request_id
|
||||
- restore: restore
|
||||
- id: restore_id
|
||||
- project_id: tenant_id_1
|
||||
- provider_id: provider_id
|
||||
- checkpoint_id: checkpoint_id
|
||||
- restore_target: restore_target
|
||||
- parameters: restore_parameters
|
||||
- status: restore_status
|
||||
- resource_status: restore_resource_status
|
||||
- resource_reason: restore_resource_reason
|
||||
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: ./samples/restore-create-response.json
|
||||
:language: javascript
|
@ -1,204 +0,0 @@
|
||||
.. -*- rst -*-
|
||||
|
||||
====================
|
||||
Scheduled operations
|
||||
====================
|
||||
|
||||
This API enables the Karbor user to manage protection Operations:
|
||||
|
||||
- Create a checkpoint for a given Protection Plan.
|
||||
- Delete unneeded checkpoints from the provider.
|
||||
- Status on a given Operation ID.
|
||||
|
||||
Scheduled operations are operations that will be executed when a specific
|
||||
trigger is triggered.
|
||||
|
||||
|
||||
List scheduled operations
|
||||
=========================
|
||||
|
||||
.. rest_method:: GET /v1/{tenant_id}/scheduled_operations
|
||||
|
||||
List all the scheduled operations based on trigger and plan, or part of the
|
||||
scheduled operations 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
|
||||
- operations: operation_list
|
||||
- scheduled_operation: operation
|
||||
- id: operation_id
|
||||
- name: operation_name
|
||||
- description: description
|
||||
- operation_type: operation_type
|
||||
- trigger_id: trigger_id
|
||||
- operation_definition: operation_definition
|
||||
- enabled: enabled
|
||||
- plans_links: links
|
||||
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: ./samples/scheduled-operations-list-response.json
|
||||
:language: javascript
|
||||
|
||||
|
||||
Create scheduled operation
|
||||
==========================
|
||||
|
||||
.. rest_method:: POST /v1/{tenant_id}/scheduled_operations
|
||||
|
||||
Create a new scheduled operation.
|
||||
|
||||
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
|
||||
- scheduled_operation: operation
|
||||
- name: operation_name
|
||||
- description: description
|
||||
- operation_type: operation_type
|
||||
- trigger_id: trigger_id
|
||||
- operation_definition: operation_definition
|
||||
|
||||
Request Example
|
||||
---------------
|
||||
|
||||
.. literalinclude:: ./samples/scheduled-operation-create-request.json
|
||||
:language: javascript
|
||||
|
||||
Response
|
||||
--------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- X-Openstack-Request-Id: request_id
|
||||
- scheduled_operation: operation
|
||||
- id: operation_id
|
||||
- name: operation_name
|
||||
- description: description
|
||||
- operation_type: operation_type
|
||||
- trigger_id: trigger_id
|
||||
- operation_definition: operation_definition
|
||||
- enabled: enabled
|
||||
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: ./samples/scheduled-operation-create-response.json
|
||||
:language: javascript
|
||||
|
||||
|
||||
Show scheduled operation
|
||||
========================
|
||||
|
||||
.. rest_method:: GET /v1/{tenant_id}/scheduled_operations/{scheduled_operation_id}
|
||||
|
||||
Shows the specified scheduled operation information.
|
||||
|
||||
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
|
||||
- scheduled_operation_id: operation_id_1
|
||||
|
||||
Response
|
||||
--------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- X-Openstack-Request-Id: request_id
|
||||
- scheduled_operation: operation
|
||||
- id: operation_id
|
||||
- name: operation_name
|
||||
- description: description
|
||||
- operation_type: operation_type
|
||||
- trigger_id: trigger_id
|
||||
- operation_definition: operation_definition
|
||||
- enabled: enabled
|
||||
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: ./samples/scheduled-operation-create-response.json
|
||||
:language: javascript
|
||||
|
||||
|
||||
Delete scheduled operation
|
||||
==========================
|
||||
|
||||
.. rest_method:: DELETE /v1/{tenant_id}/scheduled_operations/{scheduled_operation_id}
|
||||
|
||||
Deletes a specific scheduled operation.
|
||||
|
||||
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
|
||||
- scheduled_operation_id: operation_id_1
|
@ -1,115 +0,0 @@
|
||||
.. -*- rst -*-
|
||||
|
||||
========
|
||||
Services
|
||||
========
|
||||
Administrator only. Lists all Karbor services, enables or disables a Karbor
|
||||
service, freeze or thaw the specified karbor-operationengine host, failover a
|
||||
replicating karbor-operationengine host.
|
||||
|
||||
|
||||
List All Karbor Services
|
||||
========================
|
||||
|
||||
.. rest_method:: GET /v1/{tenant_id}/os-services
|
||||
|
||||
Lists all Karbor services. Provides details why any services were disabled.
|
||||
|
||||
|
||||
Response Codes
|
||||
--------------
|
||||
|
||||
.. rest_status_code:: success status.yaml
|
||||
|
||||
- 200
|
||||
|
||||
.. rest_status_code:: error status.yaml
|
||||
|
||||
- 400
|
||||
- 401
|
||||
- 403
|
||||
|
||||
Request
|
||||
-------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- tenant_id: tenant_id
|
||||
- host: host_query
|
||||
- binary: binary_query
|
||||
|
||||
Response
|
||||
--------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- services: services
|
||||
- id: service_id
|
||||
- binary: binary_required
|
||||
- host: host_name_body_req
|
||||
- status: service_status
|
||||
- state: service_state_up_down
|
||||
- updated_at: updated
|
||||
- disabled_reason: disabled_reason_body_req
|
||||
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: ./samples/services-list-response.json
|
||||
:language: javascript
|
||||
|
||||
|
||||
Update a Karbor Service Status
|
||||
==============================
|
||||
|
||||
.. rest_method:: PUT /v1/{tenant_id}/os-services/{service_id}
|
||||
|
||||
Update a Karbor operationengine service status. Specify the service by its id.
|
||||
|
||||
Response codes
|
||||
--------------
|
||||
|
||||
.. rest_status_code:: success status.yaml
|
||||
|
||||
- 200
|
||||
|
||||
.. rest_status_code:: error status.yaml
|
||||
|
||||
- 400
|
||||
- 401
|
||||
- 403
|
||||
- 404
|
||||
|
||||
Request
|
||||
-------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- tenant_id: tenant_id
|
||||
- service_id: service_id_path
|
||||
|
||||
Request Example
|
||||
---------------
|
||||
|
||||
.. literalinclude:: ./samples/services-update-request.json
|
||||
:language: javascript
|
||||
|
||||
Response Parameters
|
||||
-------------------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- service: service_body
|
||||
- id: service_id
|
||||
- binary: binary_required
|
||||
- host: host_name_body_req
|
||||
- status: service_status
|
||||
- state: service_state_up_down
|
||||
- updated_at: updated
|
||||
- disabled_reason: disabled_reason_body_req
|
||||
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: ./samples/services-update-response.json
|
||||
:language: javascript
|
@ -1,245 +0,0 @@
|
||||
.. -*- rst -*-
|
||||
|
||||
========
|
||||
Triggers
|
||||
========
|
||||
|
||||
This API enables the Karbor user to access the trigger registry and do
|
||||
the following operations:
|
||||
|
||||
- Trigger CRUD.
|
||||
- List Triggers.
|
||||
|
||||
|
||||
List triggers
|
||||
=============
|
||||
|
||||
.. rest_method:: GET /v1/{tenant_id}/triggers
|
||||
|
||||
List all the triggers offered for the given project, or part of the triggers
|
||||
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
|
||||
- triggers: trigger_list
|
||||
- id: trigger_id
|
||||
- type: trigger_type
|
||||
- name: trigger_name
|
||||
- properties: trigger_properties
|
||||
- plans_links: links
|
||||
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: ./samples/triggers-list-response.json
|
||||
:language: javascript
|
||||
|
||||
|
||||
Create trigger
|
||||
==============
|
||||
|
||||
.. rest_method:: POST /v1/{tenant_id}/triggers
|
||||
|
||||
Create a new trigger.
|
||||
|
||||
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
|
||||
- trigger_info: trigger
|
||||
- type: trigger_type
|
||||
- name: trigger_name
|
||||
- properties: trigger_properties
|
||||
|
||||
Request Example
|
||||
---------------
|
||||
|
||||
.. literalinclude:: ./samples/trigger-create-request.json
|
||||
:language: javascript
|
||||
|
||||
Response
|
||||
--------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- X-Openstack-Request-Id: request_id
|
||||
- trigger_info: trigger
|
||||
- id: trigger_id
|
||||
- type: trigger_type
|
||||
- name: trigger_name
|
||||
- properties: trigger_properties
|
||||
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: ./samples/trigger-create-response.json
|
||||
:language: javascript
|
||||
|
||||
|
||||
Show trigger
|
||||
============
|
||||
|
||||
.. rest_method:: GET /v1/{tenant_id}/triggers/{trigger_id}
|
||||
|
||||
Shows the information about a specified trigger.
|
||||
|
||||
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
|
||||
- trigger_id: trigger_id_1
|
||||
|
||||
Response
|
||||
--------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- X-Openstack-Request-Id: request_id
|
||||
- trigger_info: trigger
|
||||
- id: trigger_id
|
||||
- type: trigger_type
|
||||
- name: trigger_name
|
||||
- properties: trigger_properties
|
||||
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: ./samples/trigger-create-response.json
|
||||
:language: javascript
|
||||
|
||||
|
||||
Update trigger
|
||||
==============
|
||||
|
||||
.. rest_method:: PUT /v1/{tenant_id}/triggers/{trigger_id}
|
||||
|
||||
Updates the name or properties of a specific trigger alone or at the same
|
||||
time.
|
||||
|
||||
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
|
||||
- trigger_id: trigger_id_1
|
||||
- trigger_info: trigger
|
||||
- name: trigger_name_1
|
||||
- properties: trigger_properties_1
|
||||
|
||||
Request Example
|
||||
---------------
|
||||
|
||||
.. literalinclude:: ./samples/trigger-update-request.json
|
||||
:language: javascript
|
||||
|
||||
Response
|
||||
--------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- X-Openstack-Request-Id: request_id
|
||||
- trigger_info: trigger
|
||||
- id: trigger_id
|
||||
- type: trigger_type
|
||||
- name: trigger_name
|
||||
- properties: trigger_properties
|
||||
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: ./samples/trigger-update-response.json
|
||||
:language: javascript
|
||||
|
||||
|
||||
Delete trigger
|
||||
==============
|
||||
|
||||
.. rest_method:: DELETE /v1/{tenant_id}/triggers/{trigger_id}
|
||||
|
||||
Deletes a specific trigger.
|
||||
|
||||
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
|
||||
- trigger_id: trigger_id_1
|
@ -1,185 +0,0 @@
|
||||
.. -*- rst -*-
|
||||
|
||||
=============
|
||||
Verifications
|
||||
=============
|
||||
|
||||
This API enables the Karbor user to do verifications of the specify checkpoint:
|
||||
|
||||
- Create a verification for a given checkpoint.
|
||||
- List all verifications of a given project.
|
||||
- Show the information of a given verification.
|
||||
|
||||
When you perform the above operation, these status values are possible:
|
||||
|
||||
+-----------------+----------------------------------------------------------+
|
||||
| Status | Description |
|
||||
+=================+==========================================================+
|
||||
| in_progress | A verify operation is in progress. |
|
||||
+-----------------+----------------------------------------------------------+
|
||||
| success | A verify operation is success. |
|
||||
+-----------------+----------------------------------------------------------+
|
||||
| fail | A verify operation is failed. |
|
||||
+-----------------+----------------------------------------------------------+
|
||||
|
||||
|
||||
List All Verifications
|
||||
======================
|
||||
|
||||
.. rest_method:: GET /v1/{tenant_id}/verifications
|
||||
|
||||
Lists all verifications offered for the given project.
|
||||
|
||||
|
||||
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
|
||||
|
||||
- verifications: verifications
|
||||
- id: verification_id
|
||||
- project_id: tenant_id_1
|
||||
- provider_id: provider_id
|
||||
- checkpoint_id: checkpoint_id
|
||||
- parameters: verification_parameters
|
||||
- status: verification_status
|
||||
- resources_status: resources_status
|
||||
- resources_reason: resources_reason
|
||||
- verifications_links: verifications_links
|
||||
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: ./samples/verifications-list-response.json
|
||||
:language: javascript
|
||||
|
||||
|
||||
Create verification
|
||||
===================
|
||||
|
||||
.. rest_method:: PUT /v1/{tenant_id}/verifications
|
||||
|
||||
Execute the verify operation for the specified provider and checkpoint.
|
||||
|
||||
Response codes
|
||||
--------------
|
||||
|
||||
.. rest_status_code:: success ../status.yaml
|
||||
|
||||
- 200
|
||||
|
||||
.. rest_status_code:: error ../status.yaml
|
||||
|
||||
- 401
|
||||
- 403
|
||||
- 404
|
||||
|
||||
Request
|
||||
-------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- verification: verification
|
||||
- provider_id: provider_id
|
||||
- checkpoint_id: checkpoint_id
|
||||
- parameters: verification_parameters
|
||||
|
||||
Request Example
|
||||
---------------
|
||||
|
||||
.. literalinclude:: ./samples/verification-create-request.json
|
||||
:language: javascript
|
||||
|
||||
Response Parameters
|
||||
-------------------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- verification: verification
|
||||
- id: verification_id
|
||||
- project_id: tenant_id_1
|
||||
- provider_id: provider_id
|
||||
- checkpoint_id: checkpoint_id
|
||||
- parameters: verification_parameters
|
||||
- status: verification_status
|
||||
- resources_status: resources_status
|
||||
- resources_reason: resources_reason
|
||||
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: ./samples/verification-create-response.json
|
||||
:language: javascript
|
||||
|
||||
|
||||
Show Verification
|
||||
=================
|
||||
|
||||
.. rest_method:: GET /v1/{tenant_id}/verifications/{verification_id}
|
||||
|
||||
Show the information of a given verify operation.
|
||||
|
||||
|
||||
Response Codes
|
||||
--------------
|
||||
|
||||
.. rest_status_code:: success status.yaml
|
||||
|
||||
- 200
|
||||
|
||||
.. rest_status_code:: error status.yaml
|
||||
|
||||
- 401
|
||||
- 404
|
||||
|
||||
Request
|
||||
-------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- tenant_id: tenant_id
|
||||
- verification_id: verification_id_path
|
||||
|
||||
Response
|
||||
--------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- verification: verification
|
||||
- id: verification_id
|
||||
- project_id: tenant_id_1
|
||||
- provider_id: provider_id
|
||||
- checkpoint_id: checkpoint_id
|
||||
- parameters: verification_parameters
|
||||
- status: verification_status
|
||||
- resources_status: resources_status
|
||||
- resources_reason: resources_reason
|
||||
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: ./samples/verification-create-response.json
|
||||
:language: javascript
|
||||
|
@ -1,690 +0,0 @@
|
||||
# variables in header
|
||||
request_id:
|
||||
description: |
|
||||
A unique ID for tracking service request. The request ID associated
|
||||
with the request by default appears in the service logs.
|
||||
in: header
|
||||
required: true
|
||||
type: UUID
|
||||
|
||||
# variables in path
|
||||
checkpoint_id_1:
|
||||
description: |
|
||||
The UUID of a checkpoint.
|
||||
in: path
|
||||
required: true
|
||||
type: UUID
|
||||
operation_id_1:
|
||||
description: |
|
||||
The UUID of the scheduled operation.
|
||||
in: path
|
||||
required: true
|
||||
type: UUID
|
||||
operation_log_id_1:
|
||||
description: |
|
||||
The UUID of the operation log.
|
||||
in: path
|
||||
required: true
|
||||
type: UUID
|
||||
protectable_type_1:
|
||||
description: |
|
||||
The name of a specified protectable type.
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
provider_id_1:
|
||||
description: |
|
||||
The UUID of a provider.
|
||||
in: path
|
||||
required: true
|
||||
type: UUID
|
||||
resource_id:
|
||||
description: |
|
||||
The UUID of a resource.
|
||||
in: path
|
||||
required: true
|
||||
type: UUID
|
||||
restore_id_1:
|
||||
description: |
|
||||
The UUID of the restore.
|
||||
in: path
|
||||
required: true
|
||||
type: UUID
|
||||
service_id_path:
|
||||
description: |
|
||||
The ID of the service.
|
||||
in: path
|
||||
required: true
|
||||
type: integer
|
||||
tenant_id:
|
||||
description: |
|
||||
The UUID of the tenant in a multi-tenancy cloud.
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
trigger_id_1:
|
||||
description: |
|
||||
The UUID of the trigger.
|
||||
in: path
|
||||
required: true
|
||||
type: UUID
|
||||
verification_id_path:
|
||||
description: |
|
||||
The UUID of the verify.
|
||||
in: path
|
||||
required: true
|
||||
type: UUID
|
||||
|
||||
|
||||
# variables in query
|
||||
binary_query:
|
||||
description: |
|
||||
Filter the service list result by binary name of the service.
|
||||
in: query
|
||||
required: false
|
||||
type: string
|
||||
host_query:
|
||||
description: |
|
||||
Filter the service list result by host name of the service.
|
||||
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
|
||||
sort:
|
||||
description: |
|
||||
Comma-separated list of sort keys and optional
|
||||
sort directions in the form of < key > [: < direction > ]. A valid
|
||||
direction is ``asc`` (ascending) or ``desc`` (descending).
|
||||
in: query
|
||||
required: false
|
||||
type: string
|
||||
|
||||
|
||||
# variables in body
|
||||
binary_required:
|
||||
description: |
|
||||
The binary name of the service.
|
||||
in: body
|
||||
required: true
|
||||
type: string
|
||||
checkpoint:
|
||||
description: |
|
||||
A ``checkpoint`` object.
|
||||
in: body
|
||||
required: true
|
||||
type: object
|
||||
checkpoint_id:
|
||||
description: |
|
||||
The UUID of the checkpoint.
|
||||
in: body
|
||||
required: true
|
||||
type: UUID
|
||||
checkpoint_id_2:
|
||||
description: |
|
||||
The UUID of the checkpoint.
|
||||
in: body
|
||||
required: false
|
||||
type: UUID
|
||||
checkpoint_list:
|
||||
description: |
|
||||
The list of ``checkpoint`` objects.
|
||||
in: body
|
||||
required: true
|
||||
type: array
|
||||
checkpoint_status:
|
||||
description: |
|
||||
The status of checkpoint. A valid value is ``error``, ``protecting``,
|
||||
``available``, ``deleting``, ``deleted`` or ``error-deleting``.
|
||||
in: body
|
||||
required: true
|
||||
type: string
|
||||
dependent_resources:
|
||||
description: |
|
||||
All dependent resources for a given protectable instance, It can be an
|
||||
empty list.
|
||||
in: body
|
||||
required: true
|
||||
type: array
|
||||
dependent_types:
|
||||
description: |
|
||||
All dependent protectable type, It can be an empty list.
|
||||
in: body
|
||||
required: true
|
||||
type: array
|
||||
description:
|
||||
description: |
|
||||
The description for this object, resource, operation and so on. May be
|
||||
``NULL``.
|
||||
in: body
|
||||
required: true
|
||||
type: string
|
||||
disabled_reason_body_req:
|
||||
description: |
|
||||
The reason for disabling a service.
|
||||
in: body
|
||||
required: true
|
||||
type: string
|
||||
enabled:
|
||||
description: |
|
||||
"``1``" means ``Enable``, "``0``" means ``Disable``.
|
||||
in: body
|
||||
required: true
|
||||
type: int
|
||||
ended_at:
|
||||
description: |
|
||||
The ended time of the operation.
|
||||
in: body
|
||||
required: false
|
||||
type: string
|
||||
error_info:
|
||||
description: |
|
||||
The error info of of the operation.
|
||||
in: body
|
||||
required: false
|
||||
type: dict
|
||||
extra_info:
|
||||
description: |
|
||||
The extra information for checkpoint.
|
||||
in: body
|
||||
required: false
|
||||
type: dict
|
||||
extra_info_1:
|
||||
description: |
|
||||
The extra info of of the operation.
|
||||
in: body
|
||||
required: false
|
||||
type: dict
|
||||
host_name_body_req:
|
||||
description: |
|
||||
The name of the host.
|
||||
in: body
|
||||
required: true
|
||||
type: string
|
||||
links:
|
||||
description: |
|
||||
Links for transfer.
|
||||
in: body
|
||||
required: true
|
||||
type: array
|
||||
operation:
|
||||
description: |
|
||||
A ``scheduled operation`` object.
|
||||
in: body
|
||||
required: true
|
||||
type: object
|
||||
operation_definition:
|
||||
description: |
|
||||
The operation definition for scheduled operation, include ``provider_id``
|
||||
and ``plan_id`` key.
|
||||
in: body
|
||||
required: true
|
||||
type: dict
|
||||
operation_id:
|
||||
description: |
|
||||
The UUID of the scheduled operation.
|
||||
in: body
|
||||
required: true
|
||||
type: UUID
|
||||
operation_id_2:
|
||||
description: |
|
||||
The UUID of the scheduled operation.
|
||||
in: body
|
||||
required: false
|
||||
type: UUID
|
||||
operation_list:
|
||||
description: |
|
||||
The list of ``scheduled operation`` objects.
|
||||
in: body
|
||||
required: true
|
||||
type: array
|
||||
operation_log:
|
||||
description: |
|
||||
A ``operation_log`` object.
|
||||
in: body
|
||||
required: true
|
||||
type: object
|
||||
operation_log_id:
|
||||
description: |
|
||||
The UUID of the operation_log.
|
||||
in: body
|
||||
required: true
|
||||
type: UUID
|
||||
operation_log_list:
|
||||
description: |
|
||||
The list of ``operation_log`` objects.
|
||||
in: body
|
||||
required: true
|
||||
type: array
|
||||
operation_log_status:
|
||||
description: |
|
||||
The status of operation logs.
|
||||
in: body
|
||||
required: false
|
||||
type: string
|
||||
operation_name:
|
||||
description: |
|
||||
The name of the scheduled operation.
|
||||
in: body
|
||||
required: true
|
||||
type: string
|
||||
operation_type:
|
||||
description: |
|
||||
The type of the scheduled operation.
|
||||
in: body
|
||||
required: true
|
||||
type: string
|
||||
operation_type_1:
|
||||
description: |
|
||||
The type of the operation acitons.
|
||||
in: body
|
||||
required: true
|
||||
type: UUID
|
||||
os-resetState:
|
||||
description: |
|
||||
A ``os-resetState`` object.
|
||||
in: body
|
||||
required: true
|
||||
type: object
|
||||
plan:
|
||||
description: |
|
||||
A ``plan`` object.
|
||||
in: body
|
||||
required: true
|
||||
type: object
|
||||
plan_id:
|
||||
description: |
|
||||
The UUID of the plan.
|
||||
in: body
|
||||
required: true
|
||||
type: UUID
|
||||
plan_id_1:
|
||||
description: |
|
||||
The UUID of the plan.
|
||||
in: body
|
||||
required: false
|
||||
type: UUID
|
||||
plan_list:
|
||||
description: |
|
||||
The list of ``plan`` objects.
|
||||
in: body
|
||||
required: true
|
||||
type: array
|
||||
plan_name:
|
||||
description: |
|
||||
The name of the plan.
|
||||
in: body
|
||||
required: true
|
||||
type: string
|
||||
plan_name_1:
|
||||
description: |
|
||||
The name of the plan.
|
||||
in: body
|
||||
required: false
|
||||
type: string
|
||||
plan_parameters:
|
||||
description: |
|
||||
The specified parameters for plan.
|
||||
in: body
|
||||
required: true
|
||||
type: dict
|
||||
plan_status:
|
||||
description: |
|
||||
The status of plan. A valid value is ``started`` or ``suspended``.
|
||||
in: body
|
||||
required: true
|
||||
type: string
|
||||
plan_status_1:
|
||||
description: |
|
||||
The status of plan. A valid value is ``started`` or ``suspended``.
|
||||
in: body
|
||||
required: false
|
||||
type: string
|
||||
protectable_instance:
|
||||
description: |
|
||||
A ``protectable_instance`` object.
|
||||
in: body
|
||||
required: true
|
||||
type: object
|
||||
protectable_instance_id:
|
||||
description: |
|
||||
The UUID of a protectable instance.
|
||||
in: body
|
||||
required: true
|
||||
type: UUID
|
||||
protectable_instance_list:
|
||||
description: |
|
||||
The list of ``protectable_instance`` objects.
|
||||
in: body
|
||||
required: true
|
||||
type: array
|
||||
protectable_instance_name:
|
||||
description: |
|
||||
The name of a protectable instance.
|
||||
in: body
|
||||
required: true
|
||||
type: string
|
||||
protectable_name:
|
||||
description: |
|
||||
The name of the protectable type.
|
||||
in: body
|
||||
required: true
|
||||
type: string
|
||||
protectable_type:
|
||||
description: |
|
||||
All the available protection types.
|
||||
in: body
|
||||
required: true
|
||||
type: array
|
||||
protectable_type_2:
|
||||
description: |
|
||||
A ``protectable_type`` object.
|
||||
in: body
|
||||
required: true
|
||||
type: object
|
||||
protectable_type_3:
|
||||
description: |
|
||||
The name of a specified protectable type.
|
||||
in: body
|
||||
required: true
|
||||
type: string
|
||||
provider:
|
||||
description: |
|
||||
A ``provider`` object.
|
||||
in: body
|
||||
required: true
|
||||
type: object
|
||||
provider_id:
|
||||
description: |
|
||||
The UUID of the provider.
|
||||
in: body
|
||||
required: true
|
||||
type: UUID
|
||||
provider_id_2:
|
||||
description: |
|
||||
The UUID of the provider.
|
||||
in: body
|
||||
required: false
|
||||
type: UUID
|
||||
provider_list:
|
||||
description: |
|
||||
The list of ``provider`` objects.
|
||||
in: body
|
||||
required: true
|
||||
type: array
|
||||
provider_name:
|
||||
description: |
|
||||
The name of the provider.
|
||||
in: body
|
||||
required: true
|
||||
type: string
|
||||
resource_graph:
|
||||
description: |
|
||||
The resource graph of protection plan corresponding to the checkpoint.
|
||||
in: body
|
||||
required: true
|
||||
type: array
|
||||
resources:
|
||||
description: |
|
||||
The list of all resources in plan.
|
||||
in: body
|
||||
required: true
|
||||
type: array
|
||||
resources_1:
|
||||
description: |
|
||||
The list of all resources in plan.
|
||||
in: body
|
||||
required: false
|
||||
type: array
|
||||
resources_reason:
|
||||
description: |
|
||||
Map of the verify reason for each resource.
|
||||
in: body
|
||||
required: true
|
||||
type: dict
|
||||
resources_status:
|
||||
description: |
|
||||
Map of the verify status for each resource.
|
||||
in: body
|
||||
required: true
|
||||
type: dict
|
||||
restore:
|
||||
description: |
|
||||
A ``restore`` object.
|
||||
in: body
|
||||
required: true
|
||||
type: object
|
||||
restore_auth:
|
||||
description: |
|
||||
The authentication for restore, include "``type``" "``username``" and
|
||||
"``password``" key.
|
||||
in: body
|
||||
required: true
|
||||
type: dict
|
||||
restore_id:
|
||||
description: |
|
||||
The UUID of the restore.
|
||||
in: body
|
||||
required: true
|
||||
type: UUID
|
||||
restore_id_2:
|
||||
description: |
|
||||
The UUID of the restore.
|
||||
in: body
|
||||
required: false
|
||||
type: UUID
|
||||
restore_list:
|
||||
description: |
|
||||
The list of ``restore`` objects.
|
||||
in: body
|
||||
required: true
|
||||
type: array
|
||||
restore_parameters:
|
||||
description: |
|
||||
specifies each resource or resource type paramters according to protection
|
||||
plugin's restore schema.
|
||||
in: body
|
||||
required: true
|
||||
type: dict
|
||||
restore_resource_reason:
|
||||
description: |
|
||||
Map of the reason for failure of each resource in the restore
|
||||
in: body
|
||||
required: true
|
||||
type: dict
|
||||
restore_resource_status:
|
||||
description: |
|
||||
Map of the restore status for each resource
|
||||
in: body
|
||||
required: true
|
||||
type: dict
|
||||
restore_status:
|
||||
description: |
|
||||
The status of restore. A valid value is "``started``" "``success``" or
|
||||
"``failed``".
|
||||
in: body
|
||||
required: true
|
||||
type: string
|
||||
restore_target:
|
||||
description: |
|
||||
The target of the restore operation.
|
||||
in: body
|
||||
required: true
|
||||
type: string
|
||||
schema_extended_info:
|
||||
description: |
|
||||
The extended info schema for provider.
|
||||
in: body
|
||||
required: true
|
||||
type: dict
|
||||
schema_restore:
|
||||
description: |
|
||||
The restore schema for provider.
|
||||
in: body
|
||||
required: true
|
||||
type: dict
|
||||
schema_saved_info:
|
||||
description: |
|
||||
The saved info schema for provider.
|
||||
in: body
|
||||
required: true
|
||||
type: dict
|
||||
service_body:
|
||||
description: |
|
||||
A ``service`` object.
|
||||
in: body
|
||||
required: true
|
||||
type: object
|
||||
service_id:
|
||||
description: |
|
||||
UUID for the cleanup service.
|
||||
in: body
|
||||
required: true
|
||||
type: integer
|
||||
service_state_up_down:
|
||||
description: |
|
||||
The state of the service. One of ``up`` or ``down``.
|
||||
in: body
|
||||
required: true
|
||||
type: string
|
||||
service_status:
|
||||
description: |
|
||||
The status of the service. One of ``enabled`` or ``disabled``.
|
||||
in: body
|
||||
required: true
|
||||
type: string
|
||||
services:
|
||||
description: |
|
||||
A list of service objects.
|
||||
in: body
|
||||
required: true
|
||||
type: array
|
||||
started_at:
|
||||
description: |
|
||||
The started time of the operation.
|
||||
in: body
|
||||
required: false
|
||||
type: string
|
||||
state:
|
||||
description: |
|
||||
The status of checkpoint. A valid value is ``error`` or ``available``.
|
||||
in: body
|
||||
required: true
|
||||
type: string
|
||||
tenant_id_1:
|
||||
description: |
|
||||
The UUID of the tenant in a multi-tenancy cloud.
|
||||
in: body
|
||||
required: true
|
||||
type: string
|
||||
trigger:
|
||||
description: |
|
||||
A ``trigger`` object.
|
||||
in: body
|
||||
required: true
|
||||
type: object
|
||||
trigger_id:
|
||||
description: |
|
||||
The UUID of the trigger.
|
||||
in: body
|
||||
required: true
|
||||
type: UUID
|
||||
trigger_list:
|
||||
description: |
|
||||
The list of ``trigger`` objects.
|
||||
in: body
|
||||
required: true
|
||||
type: array
|
||||
trigger_name:
|
||||
description: |
|
||||
The name of the trigger.
|
||||
in: body
|
||||
required: true
|
||||
type: string
|
||||
trigger_name_1:
|
||||
description: |
|
||||
The name of the trigger.
|
||||
in: body
|
||||
required: false
|
||||
type: string
|
||||
trigger_properties:
|
||||
description: |
|
||||
The property list for trigger. it must include "``pattern``" and
|
||||
"``format``", may include "``window``" "``start_time``" and "``end_time``".
|
||||
in: body
|
||||
required: true
|
||||
type: dict
|
||||
trigger_properties_1:
|
||||
description: |
|
||||
The property list for trigger. it must include "``pattern``" and
|
||||
"``format``", may include "``window``" "``start_time``" and "``end_time``".
|
||||
in: body
|
||||
required: false
|
||||
type: dict
|
||||
trigger_type:
|
||||
description: |
|
||||
The type of the trigger.
|
||||
in: body
|
||||
required: true
|
||||
type: string
|
||||
updated:
|
||||
description: |
|
||||
The date and time stamp when the extension was
|
||||
last updated.
|
||||
in: body
|
||||
required: true
|
||||
type: string
|
||||
verification:
|
||||
description: |
|
||||
A ``verification`` object.
|
||||
in: body
|
||||
required: true
|
||||
type: object
|
||||
verification_id:
|
||||
description: |
|
||||
The UUID of the verify.
|
||||
in: body
|
||||
required: true
|
||||
type: UUID
|
||||
verification_parameters:
|
||||
description: |
|
||||
The specified parameters for verification.
|
||||
in: body
|
||||
required: true
|
||||
type: dict
|
||||
verification_status:
|
||||
description: |
|
||||
The status of verify. A valid value is "``in_progress``" "``success``" or
|
||||
"``fail``".
|
||||
in: body
|
||||
required: true
|
||||
type: string
|
||||
verifications:
|
||||
description: |
|
||||
A list of verification objects.
|
||||
in: body
|
||||
required: true
|
||||
type: array
|
||||
verifications_links:
|
||||
description: |
|
||||
Links for transfer.
|
||||
in: body
|
||||
required: true
|
||||
type: array
|
@ -1,9 +0,0 @@
|
||||
{
|
||||
"checkpoint": {
|
||||
"plan_id": "3523a271-68aa-42f5-b9ba-56e5200a2ebb",
|
||||
"extra_info": {
|
||||
"create-by": "operation-engine",
|
||||
"trigger_id": "33b6bb0b-1157-4e66-8553-1c9e14b1c7ba"
|
||||
}
|
||||
}
|
||||
}
|
@ -1,35 +0,0 @@
|
||||
{
|
||||
"checkpoint": {
|
||||
"id": "dcb20606-ad71-40a3-80e4-ef0fafdad0c3",
|
||||
"project_id": "e486a2f49695423ca9c47e589b948108",
|
||||
"status": "available",
|
||||
"protection_plan": {
|
||||
"id": "3523a271-68aa-42f5-b9ba-56e5200a2ebb",
|
||||
"name": "My 3 tier application",
|
||||
"provider_id": "cf56bd3e-97a7-4078-b6d5-f36246333fd9",
|
||||
"resources": [
|
||||
{
|
||||
"id": "99777fdd-8a5b-45ab-ba2c-52420008103f",
|
||||
"type": "OS::Glance::Image",
|
||||
"name": "cirros-0.3.4-x86_64-uec"
|
||||
},
|
||||
{
|
||||
"id": "cb4ef2ff-10f5-46c9-bce4-cf7a49c65a01",
|
||||
"type": "OS::Nova::Server",
|
||||
"name": "App server"
|
||||
},
|
||||
{
|
||||
"id": "25336116-f38e-4c22-81ad-e9b7bd71ba51",
|
||||
"type": "OS::Cinder::Volume",
|
||||
"name": "System volume"
|
||||
},
|
||||
{
|
||||
"id": "33b6bb0b-1157-4e66-8553-1c9e14b1c7ba",
|
||||
"type": "OS::Cinder::Volume",
|
||||
"name": "Data volume"
|
||||
}
|
||||
]
|
||||
},
|
||||
"resource_graph": "[{'0x3': ['OS::Cinder::Volume', '33b6bb0b-1157-4e66-8553-1c9e14b1c7ba', 'Data volume'], '0x2': ['OS::Cinder::Volume', '25336116-f38e-4c22-81ad-e9b7bd71ba51', 'System volume'], '0x1': ['OS::Nova::Server', 'cb4ef2ff-10f5-46c9-bce4-cf7a49c65a01', 'App server'], '0x0': ['OS::Glance::Image', '99777fdd-8a5b-45ab-ba2c-52420008103f', 'cirros-0.3.4-x86_64-uec']}, [['0x1', ['0x0']]]]"
|
||||
}
|
||||
}
|
@ -1 +0,0 @@
|
||||
{}
|
@ -1 +0,0 @@
|
||||
{}
|
@ -1,43 +0,0 @@
|
||||
{
|
||||
"checkpoints": [
|
||||
{
|
||||
"id": "dcb20606-ad71-40a3-80e4-ef0fafdad0c3",
|
||||
"project_id": "e486a2f49695423ca9c47e589b948108",
|
||||
"status": "available",
|
||||
"protection_plan": {
|
||||
"id": "3523a271-68aa-42f5-b9ba-56e5200a2ebb",
|
||||
"name": "My 3 tier application",
|
||||
"provider_id": "cf56bd3e-97a7-4078-b6d5-f36246333fd9",
|
||||
"resources": [
|
||||
{
|
||||
"id": "99777fdd-8a5b-45ab-ba2c-52420008103f",
|
||||
"type": "OS::Glance::Image",
|
||||
"name": "cirros-0.3.4-x86_64-uec"
|
||||
},
|
||||
{
|
||||
"id": "cb4ef2ff-10f5-46c9-bce4-cf7a49c65a01",
|
||||
"type": "OS::Nova::Server",
|
||||
"name": "App server"
|
||||
},
|
||||
{
|
||||
"id": "25336116-f38e-4c22-81ad-e9b7bd71ba51",
|
||||
"type": "OS::Cinder::Volume",
|
||||
"name": "System volume"
|
||||
},
|
||||
{
|
||||
"id": "33b6bb0b-1157-4e66-8553-1c9e14b1c7ba",
|
||||
"type": "OS::Cinder::Volume",
|
||||
"name": "Data volume"
|
||||
}
|
||||
]
|
||||
},
|
||||
"resource_graph": "[{'0x3': ['OS::Cinder::Volume', '33b6bb0b-1157-4e66-8553-1c9e14b1c7ba', 'Data volume'], '0x2': ['OS::Cinder::Volume', '25336116-f38e-4c22-81ad-e9b7bd71ba51', 'System volume'], '0x1': ['OS::Nova::Server', 'cb4ef2ff-10f5-46c9-bce4-cf7a49c65a01', 'App server'], '0x0': ['OS::Glance::Image', '99777fdd-8a5b-45ab-ba2c-52420008103f', 'cirros-0.3.4-x86_64-uec']}, [['0x1', ['0x0']]]]"
|
||||
}
|
||||
],
|
||||
"checkpoints_links": [
|
||||
{
|
||||
"href": "/v1/{project_id}/checkpoints?limit={limit_num}&marker=dcb20606-ad71-40a3-80e4-ef0fafdad0c3",
|
||||
"rel": "next"
|
||||
}
|
||||
]
|
||||
}
|
@ -1,16 +0,0 @@
|
||||
{
|
||||
"operation_log": {
|
||||
"status": "available",
|
||||
"provider_id": "cf56bd3e-97a7-4078-b6d5-f36246333fd9",
|
||||
"restore_id": null,
|
||||
"checkpoint_id": "dbc459ff-2ac6-44fa-ba15-89350d7ebd43",
|
||||
"error_info": null,
|
||||
"ended_at": "2017-07-28T08:43:22.000000",
|
||||
"started_at": "2017-07-28T08:42:02.000000",
|
||||
"id": "7a16c731-0658-47dd-aa3b-98ee21830e23",
|
||||
"extra_info": null,
|
||||
"plan_id": "d58ffd3e-f64e-4b67-9bb0-b86d3483e7d0",
|
||||
"scheduled_operation_id": null,
|
||||
"operation_type": "protect"
|
||||
}
|
||||
}
|
@ -1,48 +0,0 @@
|
||||
{
|
||||
"operation_logs": [{
|
||||
"status": "deleted",
|
||||
"provider_id": "cf56bd3e-97a7-4078-b6d5-f36246333fd9",
|
||||
"restore_id": null,
|
||||
"checkpoint_id": "dbc459ff-2ac6-44fa-ba15-89350d7ebd43",
|
||||
"error_info": null,
|
||||
"ended_at": "2017-07-28T09:02:57.000000",
|
||||
"started_at": "2017-07-28T09:02:41.000000",
|
||||
"id": "f0aa664b-f385-4618-bc27-9e0116cceea7",
|
||||
"extra_info": null,
|
||||
"plan_id": "d58ffd3e-f64e-4b67-9bb0-b86d3483e7d0",
|
||||
"scheduled_operation_id": null,
|
||||
"operation_type": "protect"
|
||||
},
|
||||
{
|
||||
"status": "success",
|
||||
"provider_id": "cf56bd3e-97a7-4078-b6d5-f36246333fd9",
|
||||
"restore_id": "7c0d396a-981b-4953-95f5-30382ddaa8bf",
|
||||
"checkpoint_id": "dbc459ff-2ac6-44fa-ba15-89350d7ebd43",
|
||||
"error_info": null,
|
||||
"ended_at": "2017-07-28T08:58:08.000000",
|
||||
"started_at": "2017-07-28T08:57:36.000000",
|
||||
"id": "8736649d-857e-4637-923c-3bdb35edd74e",
|
||||
"extra_info": null,
|
||||
"plan_id": null,
|
||||
"scheduled_operation_id": null,
|
||||
"operation_type": "restore"
|
||||
},
|
||||
{
|
||||
"status": "available",
|
||||
"provider_id": "cf56bd3e-97a7-4078-b6d5-f36246333fd9",
|
||||
"restore_id": null,
|
||||
"checkpoint_id": "dbc459ff-2ac6-44fa-ba15-89350d7ebd43",
|
||||
"error_info": null,
|
||||
"ended_at": "2017-07-28T08:43:22.000000",
|
||||
"started_at": "2017-07-28T08:42:02.000000",
|
||||
"id": "7a16c731-0658-47dd-aa3b-98ee21830e23",
|
||||
"extra_info": null,
|
||||
"plan_id": "d58ffd3e-f64e-4b67-9bb0-b86d3483e7d0",
|
||||
"scheduled_operation_id": null,
|
||||
"operation_type": "protect"
|
||||
}],
|
||||
"operation_logs_links": [{
|
||||
"href": "/v1/{project_id}/operation_logs?limit={limit_num}&marker=7a16c731-0658-47dd-aa3b-98ee21830e23",
|
||||
"rel": "next"
|
||||
}]
|
||||
}
|
@ -1,48 +0,0 @@
|
||||
{
|
||||
"plan": {
|
||||
"name": "My 3 tier application",
|
||||
"resources": [
|
||||
{
|
||||
"id": "99777fdd-8a5b-45ab-ba2c-52420008103f",
|
||||
"type": "OS::Glance::Image",
|
||||
"name": "cirros-0.3.4-x86_64-uec"
|
||||
},
|
||||
{
|
||||
"id": "cb4ef2ff-10f5-46c9-bce4-cf7a49c65a01",
|
||||
"type": "OS::Nova::Server",
|
||||
"name": "App server"
|
||||
},
|
||||
{
|
||||
"id": "25336116-f38e-4c22-81ad-e9b7bd71ba51",
|
||||
"type": "OS::Cinder::Volume",
|
||||
"name": "System volume",
|
||||
"extra_info": {
|
||||
"availability_zone": "az1"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "33b6bb0b-1157-4e66-8553-1c9e14b1c7ba",
|
||||
"type": "OS::Cinder::Volume",
|
||||
"name": "Data volume",
|
||||
"extra_info": {
|
||||
"availability_zone": "az1"
|
||||
}
|
||||
}
|
||||
],
|
||||
"provider_id": "cf56bd3e-97a7-4078-b6d5-f36246333fd9",
|
||||
"parameters": {
|
||||
"OS::Nova::Server": {
|
||||
"backup_name": "os"
|
||||
},
|
||||
"OS::Nova::Server#cb4ef2ff-10f5-46c9-bce4-cf7a49c65a01": {
|
||||
"backup_name": "crash"
|
||||
},
|
||||
"OS::Cinder::Volume": {
|
||||
"backup_name": "os"
|
||||
},
|
||||
"OS::Cinder::Volume#33b6bb0b-1157-4e66-8553-1c9e14b1c7ba": {
|
||||
"backup_name": "crash"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,50 +0,0 @@
|
||||
{
|
||||
"plan": {
|
||||
"id": "9e5475d2-6425-4986-9136-a4f09642297f",
|
||||
"name": "My 3 tier application",
|
||||
"resources": [
|
||||
{
|
||||
"id": "99777fdd-8a5b-45ab-ba2c-52420008103f",
|
||||
"type": "OS::Glance::Image",
|
||||
"name": "cirros-0.3.4-x86_64-uec"
|
||||
},
|
||||
{
|
||||
"id": "cb4ef2ff-10f5-46c9-bce4-cf7a49c65a01",
|
||||
"type": "OS::Nova::Server",
|
||||
"name": "App server"
|
||||
},
|
||||
{
|
||||
"id": "25336116-f38e-4c22-81ad-e9b7bd71ba51",
|
||||
"type": "OS::Cinder::Volume",
|
||||
"name": "System volume",
|
||||
"extra_info": {
|
||||
"availability_zone": "az1"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "33b6bb0b-1157-4e66-8553-1c9e14b1c7ba",
|
||||
"type": "OS::Cinder::Volume",
|
||||
"name": "Data volume",
|
||||
"extra_info": {
|
||||
"availability_zone": "az1"
|
||||
}
|
||||
}
|
||||
],
|
||||
"status": "suspended",
|
||||
"provider_id": "cf56bd3e-97a7-4078-b6d5-f36246333fd9",
|
||||
"parameters": {
|
||||
"OS::Nova::Server": {
|
||||
"backup_name": "os"
|
||||
},
|
||||
"OS::Nova::Server#cb4ef2ff-10f5-46c9-bce4-cf7a49c65a01": {
|
||||
"backup_name": "crash"
|
||||
},
|
||||
"OS::Cinder::Volume": {
|
||||
"backup_name": "os"
|
||||
},
|
||||
"OS::Cinder::Volume#33b6bb0b-1157-4e66-8553-1c9e14b1c7ba": {
|
||||
"backup_name": "crash"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,6 +0,0 @@
|
||||
{
|
||||
"plan":{
|
||||
"status": "started",
|
||||
"name": "My 1 tier application"
|
||||
}
|
||||
}
|
@ -1,50 +0,0 @@
|
||||
{
|
||||
"plan": {
|
||||
"id": "9e5475d2-6425-4986-9136-a4f09642297f",
|
||||
"name": "My 1 tier application",
|
||||
"resources": [
|
||||
{
|
||||
"id": "99777fdd-8a5b-45ab-ba2c-52420008103f",
|
||||
"type": "OS::Glance::Image",
|
||||
"name": "cirros-0.3.4-x86_64-uec"
|
||||
},
|
||||
{
|
||||
"id": "cb4ef2ff-10f5-46c9-bce4-cf7a49c65a01",
|
||||
"type": "OS::Nova::Server",
|
||||
"name": "App server"
|
||||
},
|
||||
{
|
||||
"id": "25336116-f38e-4c22-81ad-e9b7bd71ba51",
|
||||
"type": "OS::Cinder::Volume",
|
||||
"name": "System volume",
|
||||
"extra_info": {
|
||||
"availability_zone": "az1"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "33b6bb0b-1157-4e66-8553-1c9e14b1c7ba",
|
||||
"type": "OS::Cinder::Volume",
|
||||
"name": "Data volume",
|
||||
"extra_info": {
|
||||
"availability_zone": "az1"
|
||||
}
|
||||
}
|
||||
],
|
||||
"status": "started",
|
||||
"provider_id": "cf56bd3e-97a7-4078-b6d5-f36246333fd9",
|
||||
"parameters": {
|
||||
"OS::Nova::Server": {
|
||||
"backup_name": "os"
|
||||
},
|
||||
"OS::Nova::Server#cb4ef2ff-10f5-46c9-bce4-cf7a49c65a01": {
|
||||
"backup_name": "crash"
|
||||
},
|
||||
"OS::Cinder::Volume": {
|
||||
"backup_name": "os"
|
||||
},
|
||||
"OS::Cinder::Volume#33b6bb0b-1157-4e66-8553-1c9e14b1c7ba": {
|
||||
"backup_name": "crash"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,58 +0,0 @@
|
||||
{
|
||||
"plans": [
|
||||
{
|
||||
"id": "9e5475d2-6425-4986-9136-a4f09642297f",
|
||||
"name": "My 3 tier application",
|
||||
"resources": [
|
||||
{
|
||||
"id": "99777fdd-8a5b-45ab-ba2c-52420008103f",
|
||||
"type": "OS::Glance::Image",
|
||||
"name": "cirros-0.3.4-x86_64-uec"
|
||||
},
|
||||
{
|
||||
"id": "cb4ef2ff-10f5-46c9-bce4-cf7a49c65a01",
|
||||
"type": "OS::Nova::Server",
|
||||
"name": "App server"
|
||||
},
|
||||
{
|
||||
"id": "25336116-f38e-4c22-81ad-e9b7bd71ba51",
|
||||
"type": "OS::Cinder::Volume",
|
||||
"name": "System volume",
|
||||
"extra_info": {
|
||||
"availability_zone": "az1"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "33b6bb0b-1157-4e66-8553-1c9e14b1c7ba",
|
||||
"type": "OS::Cinder::Volume",
|
||||
"name": "Data volume",
|
||||
"extra_info": {
|
||||
"availability_zone": "az1"
|
||||
}
|
||||
}
|
||||
],
|
||||
"status": "suspended",
|
||||
"provider_id": "cf56bd3e-97a7-4078-b6d5-f36246333fd9",
|
||||
"parameters": {
|
||||
"OS::Nova::Server": {
|
||||
"backup_name": "os"
|
||||
},
|
||||
"OS::Nova::Server#cb4ef2ff-10f5-46c9-bce4-cf7a49c65a01": {
|
||||
"backup_name": "crash"
|
||||
},
|
||||
"OS::Cinder::Volume": {
|
||||
"backup_name": "os"
|
||||
},
|
||||
"OS::Cinder::Volume#33b6bb0b-1157-4e66-8553-1c9e14b1c7ba": {
|
||||
"backup_name": "crash"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"plans_links": [
|
||||
{
|
||||
"href": "/v1/{project_id}/plans?limit={limit_num}&marker=9e5475d2-6425-4986-9136-a4f09642297f",
|
||||
"rel": "next"
|
||||
}
|
||||
]
|
||||
}
|
@ -1,14 +0,0 @@
|
||||
{
|
||||
"instance": {
|
||||
"id": "cb4ef2ff-10f5-46c9-bce4-cf7a49c65a01",
|
||||
"type": "OS::Nova::Server",
|
||||
"name": "My VM",
|
||||
"dependent_resources": [
|
||||
{
|
||||
"id": "99777fdd-8a5b-45ab-ba2c-52420008103f",
|
||||
"type": "OS::Glance::Image",
|
||||
"name": "cirros-0.3.4-x86_64-uec"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
@ -1,26 +0,0 @@
|
||||
{
|
||||
"instances":[
|
||||
{
|
||||
"id": "25336116-f38e-4c22-81ad-e9b7bd71ba51",
|
||||
"type": "OS::Cinder::Volume",
|
||||
"name": "System volume",
|
||||
"extra_info": {
|
||||
"availability_zone": "az1"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "33b6bb0b-1157-4e66-8553-1c9e14b1c7ba",
|
||||
"type": "OS::Cinder::Volume",
|
||||
"name": "Data volume",
|
||||
"extra_info": {
|
||||
"availability_zone": "az1"
|
||||
}
|
||||
}
|
||||
],
|
||||
"instances_links": [
|
||||
{
|
||||
"href": "/v1/{project_id}/instances?limit=1&marker=cb4ef2ff-10f5-46c9-bce4-cf7a49c65a01",
|
||||
"rel": "next"
|
||||
}
|
||||
]
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
{
|
||||
"protectable_type": {
|
||||
"name": "OS::Nova::Server",
|
||||
"dependent_types": [
|
||||
"OS::Cinder::Volume",
|
||||
"OS::Glance::Image"
|
||||
]
|
||||
}
|
||||
}
|
@ -1,8 +0,0 @@
|
||||
{
|
||||
"protectable_type": [
|
||||
"OS::Keystone::Project",
|
||||
"OS::Cinder::Volume",
|
||||
"OS::Glance::Image",
|
||||
"OS::Nova::Server"
|
||||
]
|
||||
}
|
@ -1,60 +0,0 @@
|
||||
{
|
||||
"provider": {
|
||||
"id": "2220f8b1-975d-4621-a872-fa9afb43cb6c",
|
||||
"name": "OS Infra Provider",
|
||||
"description": "This provider uses OpenStack's own services (swift, cinder) as storage",
|
||||
"extended_info_schema": {
|
||||
"options_schema": {
|
||||
"OS::Cinder::Volume": {
|
||||
"required": [
|
||||
"backup_mode"
|
||||
],
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"backup_mode": {
|
||||
"default": "auto",
|
||||
"enum": [
|
||||
"full",
|
||||
"incremental",
|
||||
"auto"
|
||||
],
|
||||
"type": "string",
|
||||
"description": "The backup mode.",
|
||||
"title": "Backup Mode"
|
||||
}
|
||||
},
|
||||
"title": "Cinder Protection Options"
|
||||
}
|
||||
},
|
||||
"saved_info_schema": {
|
||||
"OS::Cinder::Volume": {
|
||||
"required": [
|
||||
"name"
|
||||
],
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"name": {
|
||||
"type": "string",
|
||||
"description": "The name for this backup.",
|
||||
"title": "Name"
|
||||
}
|
||||
},
|
||||
"title": "Cinder Protection Saved Info"
|
||||
}
|
||||
},
|
||||
"restore_schema": {
|
||||
"OS::Cinder::Volume": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"restore_name": {
|
||||
"type": "string",
|
||||
"description": "The name of the restored volume.",
|
||||
"title": "Restore Name"
|
||||
}
|
||||
},
|
||||
"title": "Cinder Protection Restore"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,68 +0,0 @@
|
||||
{
|
||||
"providers": [
|
||||
{
|
||||
"id": "2220f8b1-975d-4621-a872-fa9afb43cb6c",
|
||||
"name": "OS Infra Provider",
|
||||
"description": "This provider uses OpenStack's own services (swift, cinder) as storage",
|
||||
"extended_info_schema": {
|
||||
"options_schema": {
|
||||
"OS::Cinder::Volume": {
|
||||
"required": [
|
||||
"backup_mode"
|
||||
],
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"backup_mode": {
|
||||
"default": "auto",
|
||||
"enum": [
|
||||
"full",
|
||||
"incremental",
|
||||
"auto"
|
||||
],
|
||||
"type": "string",
|
||||
"description": "The backup mode.",
|
||||
"title": "Backup Mode"
|
||||
}
|
||||
},
|
||||
"title": "Cinder Protection Options"
|
||||
}
|
||||
},
|
||||
"saved_info_schema": {
|
||||
"OS::Cinder::Volume": {
|
||||
"required": [
|
||||
"name"
|
||||
],
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"name": {
|
||||
"type": "string",
|
||||
"description": "The name for this backup.",
|
||||
"title": "Name"
|
||||
}
|
||||
},
|
||||
"title": "Cinder Protection Saved Info"
|
||||
}
|
||||
},
|
||||
"restore_schema": {
|
||||
"OS::Cinder::Volume": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"restore_name": {
|
||||
"type": "string",
|
||||
"description": "The name of the restored volume.",
|
||||
"title": "Restore Name"
|
||||
}
|
||||
},
|
||||
"title": "Cinder Protection Restore"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"providers_links": [
|
||||
{
|
||||
"href": "/v1/{project_id}/providers?limit={limit_num}&marker=cf56bd3e-97a7-4078-b6d5-f36246333fd9",
|
||||
"rel": "next"
|
||||
}
|
||||
]
|
||||
}
|
@ -1,18 +0,0 @@
|
||||
{
|
||||
"restore": {
|
||||
"provider_id": "cf56bd3e-97a7-4078-b6d5-f36246333fd9",
|
||||
"checkpoint_id": "dcb20606-ad71-40a3-80e4-ef0fafdad0c3",
|
||||
"restore_target": "http://192.168.1.2/identity/",
|
||||
"restore_auth": {
|
||||
"type": "password",
|
||||
"username": "admin",
|
||||
"password": "secretadmin"
|
||||
},
|
||||
"parameters": {
|
||||
"OS::Cinder::Volume": {
|
||||
},
|
||||
"OS::Nova::Server#3f8af6c6-ecea-42bd-b44c-724785bbe5ea": {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,27 +0,0 @@
|
||||
{
|
||||
"restore": {
|
||||
"id": "22b82aa7-9179-4c71-bba2-caf5c0e68db7",
|
||||
"project_id": "e486a2f49695423ca9c47e589b948108",
|
||||
"provider_id": "cf56bd3e-97a7-4078-b6d5-f36246333fd9",
|
||||
"checkpoint_id": "dcb20606-ad71-40a3-80e4-ef0fafdad0c3",
|
||||
"restore_target": "http://192.168.1.2/identity/",
|
||||
"restore_auth": {
|
||||
"type": "password",
|
||||
"username": "admin",
|
||||
"password": "***"
|
||||
},
|
||||
"parameters": {
|
||||
"OS::Cinder::Volume": {
|
||||
},
|
||||
"OS::Nova::Server#3f8af6c6-ecea-42bd-b44c-724785bbe5ea": {
|
||||
}
|
||||
},
|
||||
"resource_status": {
|
||||
"OS::Nova::Server#3f8af6c6-ecea-42bd-b44c-724785bbe5ea": "restoring",
|
||||
"OS::Cinder::Volume#98eb847f-9f59-4d54-8b7b-5047bd2fa4c7": "restoring"
|
||||
},
|
||||
"resource_reason": {
|
||||
},
|
||||
"status": "success"
|
||||
}
|
||||
}
|
@ -1,36 +0,0 @@
|
||||
{
|
||||
"restores": [
|
||||
{
|
||||
"id": "22b82aa7-9179-4c71-bba2-caf5c0e68db7",
|
||||
"project_id": "e486a2f49695423ca9c47e589b948108",
|
||||
"provider_id": "cf56bd3e-97a7-4078-b6d5-f36246333fd9",
|
||||
"checkpoint_id": "dcb20606-ad71-40a3-80e4-ef0fafdad0c3",
|
||||
"restore_target": "http://192.168.1.2/identity/",
|
||||
"parameters": {
|
||||
"OS::Cinder::Volume": {
|
||||
},
|
||||
"OS::Nova::Server#3f8af6c6-ecea-42bd-b44c-724785bbe5ea": {
|
||||
}
|
||||
},
|
||||
"restore_auth": {
|
||||
"type": "password",
|
||||
"username": "admin",
|
||||
"password": "***"
|
||||
},
|
||||
"resource_status": {
|
||||
"OS::Nova::Server#3f8af6c6-ecea-42bd-b44c-724785bbe5ea": "restoring",
|
||||
"OS::Cinder::Volume#98eb847f-9f59-4d54-8b7b-5047bd2fa4c7": "error"
|
||||
},
|
||||
"resource_reason": {
|
||||
"OS::Cinder::Volume#98eb847f-9f59-4d54-8b7b-5047bd2fa4c7": "Backup not found"
|
||||
},
|
||||
"status": "success"
|
||||
}
|
||||
],
|
||||
"restores_links": [
|
||||
{
|
||||
"href": "/v1/{project_id}/restores?limit={limit_num}&marker=22b82aa7-9179-4c71-bba2-caf5c0e68db7",
|
||||
"rel": "next"
|
||||
}
|
||||
]
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
{"scheduled_operation": {
|
||||
"name": "My scheduled operation",
|
||||
"description": "It will run everyday",
|
||||
"operation_type": "protect",
|
||||
"trigger_id": "23902b02-5666-4ee6-8dfe-962ac09c3995",
|
||||
"operation_definition": {
|
||||
"provider_id": "2a9ce1f3-cc1a-4516-9435-0ebb13caa399",
|
||||
"plan_id": "2a9ce1f3-cc1a-4516-9435-0ebb13caa398"
|
||||
}
|
||||
}
|
||||
}
|
@ -1,13 +0,0 @@
|
||||
{"scheduled_operation": {
|
||||
"id": "1a2c0c3d-f402-4cd8-b5db-82e85cb51fad",
|
||||
"name": "My scheduled operation",
|
||||
"description": "It will run everyday",
|
||||
"operation_type": "protect",
|
||||
"trigger_id": "23902b02-5666-4ee6-8dfe-962ac09c3995",
|
||||
"operation_definition": {
|
||||
"provider_id": "2a9ce1f3-cc1a-4516-9435-0ebb13caa399",
|
||||
"plan_id": "2a9ce1f3-cc1a-4516-9435-0ebb13caa398"
|
||||
},
|
||||
"enabled": 1
|
||||
}
|
||||
}
|
@ -1,22 +0,0 @@
|
||||
{"operations": [
|
||||
{"scheduled_operation": {
|
||||
"id": "1a2c0c3d-f402-4cd8-b5db-82e85cb51fad",
|
||||
"name": "My scheduled operation",
|
||||
"description": "It will run everyday",
|
||||
"operation_type": "protect",
|
||||
"trigger_id": "23902b02-5666-4ee6-8dfe-962ac09c3995",
|
||||
"operation_definition": {
|
||||
"provider_id": "2a9ce1f3-cc1a-4516-9435-0ebb13caa399",
|
||||
"plan_id": "2a9ce1f3-cc1a-4516-9435-0ebb13caa398"
|
||||
},
|
||||
"enabled": 1
|
||||
}
|
||||
},
|
||||
],
|
||||
"operations_links": [
|
||||
{
|
||||
"href": "/v1/{project_id}/scheduled_operations?limit={limit_num}&marker=1a2c0c3d-f402-4cd8-b5db-82e85cb51fad",
|
||||
"rel": "next"
|
||||
}
|
||||
]
|
||||
}
|
@ -1,27 +0,0 @@
|
||||
{
|
||||
"services": [{
|
||||
"status": "enabled",
|
||||
"binary": "karbor-operationengine",
|
||||
"state": "down",
|
||||
"updated_at": "2019-11-03T11:50:25.000000",
|
||||
"host": "devstack",
|
||||
"disabled_reason": null,
|
||||
"id": 1
|
||||
}, {
|
||||
"status": "enabled",
|
||||
"binary": "karbor-operationengine",
|
||||
"state": "up",
|
||||
"updated_at": "2019-11-11T02:56:05.000000",
|
||||
"host": "devstack",
|
||||
"disabled_reason": null,
|
||||
"id": 2
|
||||
}, {
|
||||
"status": "enabled",
|
||||
"binary": "karbor-protection",
|
||||
"state": "up",
|
||||
"updated_at": "2019-11-11T02:56:03.000000",
|
||||
"host": "devstack",
|
||||
"disabled_reason": null,
|
||||
"id": 3
|
||||
}]
|
||||
}
|
@ -1,4 +0,0 @@
|
||||
{
|
||||
"status": "disabled",
|
||||
"disabled_reason": "service down"
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
{
|
||||
"service": {
|
||||
"status": "disabled",
|
||||
"binary": "karbor-operationengine",
|
||||
"state": "down",
|
||||
"updated_at": "2019-11-03T11:50:25.000000",
|
||||
"host": "devstack",
|
||||
"disabled_reason": null,
|
||||
"id": 1
|
||||
}
|
||||
}
|
@ -1,12 +0,0 @@
|
||||
{"trigger_info": {
|
||||
"name": "My backup trigger",
|
||||
"type": "time",
|
||||
"properties": {
|
||||
"format": "calendar",
|
||||
"pattern": "BEGIN:VEVENT\\nRRULE:FREQ=HOURLY;INTERVAL=1;\\nEND:VEVENT",
|
||||
"start_time": "2015-12-17T08:30:00",
|
||||
"end_time": "2016-03-17T08:30:00",
|
||||
"window": "3600"
|
||||
}
|
||||
}
|
||||
}
|
@ -1,13 +0,0 @@
|
||||
{"trigger_info": {
|
||||
"id": "2a9ce1f3-cc1a-4516-9435-0ebb13caa398",
|
||||
"name": "My backup trigger",
|
||||
"type": "time",
|
||||
"properties": {
|
||||
"format": "calendar",
|
||||
"pattern": "BEGIN:VEVENT\\nRRULE:FREQ=HOURLY;INTERVAL=1;\\nEND:VEVENT",
|
||||
"start_time": "2015-12-17T08:30:00",
|
||||
"end_time": "2016-03-17T08:30:00",
|
||||
"window": "3600"
|
||||
}
|
||||
}
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
{"trigger_info": {
|
||||
"name": "Trigger for backup",
|
||||
"properties": {
|
||||
"format": "calendar",
|
||||
"pattern": "BEGIN:VEVENT\\nRRULE:FREQ=HOURLY;INTERVAL=1;\\nEND:VEVENT",
|
||||
"start_time": "2015-12-17T08:30:00",
|
||||
"end_time": "2016-03-17T08:30:00",
|
||||
"window": "3600"
|
||||
}
|
||||
}
|
||||
}
|
@ -1,13 +0,0 @@
|
||||
{"trigger_info": {
|
||||
"id": "2a9ce1f3-cc1a-4516-9435-0ebb13caa398",
|
||||
"name": "Trigger for backup",
|
||||
"type": "time",
|
||||
"properties": {
|
||||
"format": "calendar",
|
||||
"pattern": "BEGIN:VEVENT\\nRRULE:FREQ=HOURLY;INTERVAL=1;\\nEND:VEVENT",
|
||||
"start_time": "2015-12-17T08:30:00",
|
||||
"end_time": "2016-03-17T08:30:00",
|
||||
"window": "3600"
|
||||
}
|
||||
}
|
||||
}
|
@ -1,22 +0,0 @@
|
||||
{"triggers": [
|
||||
{"trigger_info": {
|
||||
"id": "2a9ce1f3-cc1a-4516-9435-0ebb13caa398",
|
||||
"type": "time",
|
||||
"name": "My backup trigger",
|
||||
"properties": {
|
||||
"format": "calendar",
|
||||
"pattern": "BEGIN:VEVENT\\nRRULE:FREQ=HOURLY;INTERVAL=1;\\nEND:VEVENT",
|
||||
"start_time": "2015-12-17T08:30:00",
|
||||
"end_time": "2016-03-17T08:30:00",
|
||||
"window": "3600"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"triggers_links": [
|
||||
{
|
||||
"href": "/v1/{project_id}/triggers?limit={limit_num}&marker=2a9ce1f3-cc1a-4516-9435-0ebb13caa398",
|
||||
"rel": "next"
|
||||
}
|
||||
]
|
||||
}
|
@ -1,12 +0,0 @@
|
||||
{
|
||||
"verification": {
|
||||
"status": "in_progress",
|
||||
"resources_status": {},
|
||||
"provider_id": "6659007d-6f66-4a0f-9cb4-17d6aded0bb9",
|
||||
"parameters": {},
|
||||
"checkpoint_id": "a7418b97-0474-4360-9600-5a08fd60a2b6",
|
||||
"project_id": "5d3242420cb641ac840cd4ae37af0f18",
|
||||
"id": "8c1df1c5-29ab-4f77-8b45-bebc3aacf996",
|
||||
"resources_reason": {}
|
||||
}
|
||||
}
|
@ -1,25 +0,0 @@
|
||||
{"verifications": [
|
||||
{
|
||||
"status": "fail",
|
||||
"resources_status": {},
|
||||
"provider_id": "6659007d-6f66-4a0f-9cb4-17d6aded0bb9",
|
||||
"parameters": {},
|
||||
"checkpoint_id": "35486bac-1b14-4158-a403-916cf09a5596",
|
||||
"project_id": "5d3242420cb641ac840cd4ae37af0f18",
|
||||
"id": "7f7bd4a4-0a96-4f03-9553-d6c6cf7b36b8",
|
||||
"resources_reason": {}
|
||||
},
|
||||
{
|
||||
"status": "success",
|
||||
"resources_status": {
|
||||
"OS::Glance::Image#1a220464-6449-4fb6-8169-14f3016c4bb9": "available"
|
||||
},
|
||||
"provider_id": "6659007d-6f66-4a0f-9cb4-17d6aded0bb9",
|
||||
"parameters": {},
|
||||
"checkpoint_id": "dd8bbf5a-6759-4ce2-a64b-854db2fa7541",
|
||||
"project_id": "5d3242420cb641ac840cd4ae37af0f18",
|
||||
"id": "2c126c95-3e69-46fb-83f0-b63e9770906f",
|
||||
"resources_reason": {
|
||||
"OS::Glance::Image#1a220464-6449-4fb6-8169-14f3016c4bb9": ""}
|
||||
}]
|
||||
}
|
@ -1,62 +0,0 @@
|
||||
#################
|
||||
# Success Codes #
|
||||
#################
|
||||
200:
|
||||
default: |
|
||||
Request was successful.
|
||||
201:
|
||||
default: |
|
||||
Resource was created and is ready to use.
|
||||
202:
|
||||
default: |
|
||||
Request was accepted for processing, but the processing has not been
|
||||
completed. A 'location' header is included in the response which contains
|
||||
a link to check the progress of the request.
|
||||
204:
|
||||
default: |
|
||||
The server has fulfilled the request by deleting the resource.
|
||||
300:
|
||||
default: |
|
||||
There are multiple choices for resources. The request has to be more
|
||||
specific to successfully retrieve one of these resources.
|
||||
302:
|
||||
default: |
|
||||
The response is about a redirection hint. The header of the response
|
||||
usually contains a 'location' value where requesters can check to track
|
||||
the real location of the resource.
|
||||
|
||||
#################
|
||||
# Error Codes #
|
||||
#################
|
||||
|
||||
400:
|
||||
default: |
|
||||
Some content in the request was invalid.
|
||||
resource_signal: |
|
||||
The target resource doesn't support receiving a signal.
|
||||
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.
|
||||
409:
|
||||
default: |
|
||||
This operation conflicted with another operation on this resource.
|
||||
duplcate_zone: |
|
||||
There is already a zone with this name.
|
||||
500:
|
||||
default: |
|
||||
Something went wrong inside the service. This should not happen usually.
|
||||
If it does happen, it means the server has experienced some serious
|
||||
problems.
|
||||
503:
|
||||
default: |
|
||||
Service is not available. This is mostly caused by service configuration
|
||||
errors which prevents the service from successful start up.
|
@ -1,62 +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.
|
||||
|
||||
#
|
||||
# This script is executed in the OpenStack CI job that runs DevStack + tempest.
|
||||
# It is also used by the rally job. You can find the CI job configuration here:
|
||||
#
|
||||
# http://git.openstack.org/cgit/openstack-infra/project-config/tree/jenkins/jobs/karbor.yaml
|
||||
#
|
||||
|
||||
s=rabbit,mysql,key
|
||||
s+=,n-cpu,n-api,n-cond,n-sch,n-cauth,placement-api,n-api-meta
|
||||
# n-obj has been removed from mitaka
|
||||
if [[ "stable/kilo stable/liberty" =~ $ZUUL_BRANCH ]]; then
|
||||
s+=,n-obj
|
||||
fi
|
||||
|
||||
if [[ "stable/kilo stable/liberty stable/mitaka stable/ocata" =~ $ZUUL_BRANCH ]]; then
|
||||
s+=,n-crt
|
||||
fi
|
||||
|
||||
s+=,neutron,q-svc,q-agt,q-dhcp,q-meta
|
||||
s+=,cinder,g-api,g-reg
|
||||
s+=,c-api,c-vol,c-sch,c-bak
|
||||
s+=,s-proxy,s-object,s-container,s-account
|
||||
s+=,h-eng,h-api,h-api-cfn,h-api-cw
|
||||
s+=,manila,m-api,m-sch,m-shr,m-dat
|
||||
s+=,karbor,karbor-api,karbor-operationengine,karbor-protection
|
||||
ENABLED_SERVICES=$s
|
||||
export ENABLED_SERVICES
|
||||
|
||||
DEFAULT_EXTRA_SPECS="'snapshot_support=True create_share_from_snapshot_support=True mount_snapshot_support=True driver_handles_share_servers=False'"
|
||||
|
||||
DEVSTACK_LOCAL_CONFIG+="API_WORKERS=4"
|
||||
DEVSTACK_LOCAL_CONFIG+=$'\n'"VOLUME_BACKING_FILE_SIZE=20490M"
|
||||
DEVSTACK_LOCAL_CONFIG+=$'\n'"enable_plugin karbor https://git.openstack.org/openstack/karbor"
|
||||
DEVSTACK_LOCAL_CONFIG+=$'\n'"enable_plugin manila https://git.openstack.org/openstack/manila"
|
||||
DEVSTACK_LOCAL_CONFIG+=$'\n'"MANILA_OPTGROUP_generic1_driver_handles_share_servers=False"
|
||||
DEVSTACK_LOCAL_CONFIG+=$'\n'"MANILA_USE_SERVICE_INSTANCE_PASSWORD=True"
|
||||
DEVSTACK_LOCAL_CONFIG+=$'\n'"MANILA_DEFAULT_SHARE_TYPE_EXTRA_SPECS=$DEFAULT_EXTRA_SPECS"
|
||||
DEVSTACK_LOCAL_CONFIG+=$'\n'"SHARE_DRIVER=manila.share.drivers.lvm.LVMShareDriver"
|
||||
|
||||
DEVSTACK_LOCAL_CONFIG+=$'\n'"SWIFT_HASH=66a3d6b56c1f479c8b4e70ab5c2000f5"
|
||||
DEVSTACK_LOCAL_CONFIG+=$'\n'"SWIFT_REPLICAS=1"
|
||||
DEVSTACK_LOCAL_CONFIG+=$'\n'"SWIFT_DATA_DIR=$DEST/data"
|
||||
DEVSTACK_LOCAL_CONFIG+=$'\n'"SWIFT_LOOPBACK_DISK_SIZE=10G"
|
||||
DEVSTACK_LOCAL_CONFIG+=$'\n'"DATABASE_PASSWORD=password"
|
||||
DEVSTACK_LOCAL_CONFIG+=$'\n'"RABBIT_PASSWORD=password"
|
||||
DEVSTACK_LOCAL_CONFIG+=$'\n'"SERVICE_PASSWORD=password"
|
||||
DEVSTACK_LOCAL_CONFIG+=$'\n'"SERVICE_TOKEN=password"
|
||||
DEVSTACK_LOCAL_CONFIG+=$'\n'"ADMIN_PASSWORD=password"
|
||||
|
||||
export DEVSTACK_LOCAL_CONFIG
|
@ -1,26 +0,0 @@
|
||||
Listen %PUBLICPORT%
|
||||
|
||||
<VirtualHost *:%PUBLICPORT%>
|
||||
WSGIDaemonProcess osapi_karbor processes=%APIWORKERS% threads=1 user=%USER% display-name=%{GROUP}
|
||||
WSGIProcessGroup osapi_karbor
|
||||
WSGIScriptAlias / %KARBOR_BIN_DIR%/karbor-wsgi
|
||||
WSGIApplicationGroup %{GLOBAL}
|
||||
WSGIPassAuthorization On
|
||||
<IfVersion >= 2.4>
|
||||
ErrorLogFormat "%{cu}t %M"
|
||||
</IfVersion>
|
||||
ErrorLog /var/log/%APACHE_NAME%/karbor-api.log
|
||||
%SSLENGINE%
|
||||
%SSLCERTFILE%
|
||||
%SSLKEYFILE%
|
||||
|
||||
<Directory %KARBOR_BIN_DIR%>
|
||||
<IfVersion >= 2.4>
|
||||
Require all granted
|
||||
</IfVersion>
|
||||
<IfVersion < 2.4>
|
||||
Order allow,deny
|
||||
Allow from all
|
||||
</IfVersion>
|
||||
</Directory>
|
||||
</VirtualHost>
|
@ -1,44 +0,0 @@
|
||||
[[local|localrc]]
|
||||
|
||||
DATABASE_PASSWORD=password
|
||||
RABBIT_PASSWORD=password
|
||||
SERVICE_PASSWORD=password
|
||||
SERVICE_TOKEN=password
|
||||
ADMIN_PASSWORD=password
|
||||
|
||||
enable_plugin karbor https://git.openstack.org/openstack/karbor master
|
||||
enable_plugin karbor-dashboard https://git.openstack.org/openstack/karbor-dashboard master
|
||||
|
||||
#run the services you want to use
|
||||
ENABLED_SERVICES=rabbit,mysql,key
|
||||
ENABLED_SERVICES+=,n-cpu,n-api,n-obj,n-cond,n-sch,n-novnc,n-cauth,n-api-meta
|
||||
ENABLED_SERVICES+=,placement-api
|
||||
ENABLED_SERVICES+=,neutron,q-svc,q-agt,q-dhcp,q-meta
|
||||
ENABLED_SERVICES+=,cinder,g-api,g-reg
|
||||
ENABLED_SERVICES+=,c-api,c-vol,c-sch,c-bak,horizon
|
||||
ENABLED_SERVICES+=,manila,m-api,m-sch,m-shr,m-dat
|
||||
|
||||
#Add the karbor services
|
||||
enable_service karbor-api
|
||||
enable_service karbor-operationengine
|
||||
enable_service karbor-protection
|
||||
|
||||
#Add the karbor-dashboard services
|
||||
enable_service karbor-dashboard
|
||||
|
||||
#disable the default services you don't want to use
|
||||
disable_service n-net
|
||||
|
||||
SWIFT_HASH=66a3d6b56c1f479c8b4e70ab5c2000f5
|
||||
SWIFT_REPLICAS=1
|
||||
SWIFT_DATA_DIR=$DEST/data
|
||||
enable_service s-proxy s-object s-container s-account
|
||||
|
||||
# Enable Manila
|
||||
|
||||
enable_plugin manila https://git.openstack.org/openstack/manila master
|
||||
|
||||
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
|
@ -1,272 +0,0 @@
|
||||
# Devstack extras script to install Karbor
|
||||
|
||||
# Test if any karbor services are enabled
|
||||
# is_karbor_enabled
|
||||
function is_karbor_enabled {
|
||||
echo "Checking if Karbor is Enabled"
|
||||
[[ ,${ENABLED_SERVICES} =~ ,"karbor-" ]] && Q_ENABLE_KARBOR="False"
|
||||
Q_ENABLE_KARBOR="True"
|
||||
}
|
||||
|
||||
function _create_karbor_conf_dir {
|
||||
|
||||
# Put config files in ``KARBOR_CONF_DIR`` for everyone to find
|
||||
|
||||
sudo install -d -o $STACK_USER $KARBOR_CONF_DIR
|
||||
|
||||
}
|
||||
|
||||
# create_karbor_accounts() - Set up common required karbor accounts
|
||||
# Tenant User Roles
|
||||
# ------------------------------------------------------------------
|
||||
# service karbor service
|
||||
function create_karbor_accounts {
|
||||
if is_service_enabled karbor-api karbor-protection karbor-operationengine; then
|
||||
create_service_user "$KARBOR_TRUSTEE_USER" "admin"
|
||||
fi
|
||||
|
||||
if is_service_enabled karbor-api; then
|
||||
get_or_create_service "$KARBOR_SERVICE_NAME" "$KARBOR_SERVICE_TYPE" "Application Data Protection Service"
|
||||
|
||||
get_or_create_endpoint "$KARBOR_SERVICE_TYPE" "$REGION_NAME" \
|
||||
"$KARBOR_API_ENDPOINT" \
|
||||
"$KARBOR_API_ENDPOINT" \
|
||||
"$KARBOR_API_ENDPOINT"
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
# karbor_config_apache_wsgi() - Set WSGI config files
|
||||
function karbor_config_apache_wsgi {
|
||||
local karbor_apache_conf
|
||||
karbor_apache_conf=$(apache_site_config_for osapi_karbor)
|
||||
local karbor_ssl=""
|
||||
local karbor_certfile=""
|
||||
local karbor_keyfile=""
|
||||
local karbor_api_port=$KARBOR_API_PORT
|
||||
|
||||
if is_ssl_enabled_service karbor-api; then
|
||||
karbor_ssl="SSLEngine On"
|
||||
karbor_certfile="SSLCertificateFile $KARBOR_SSL_CERT"
|
||||
karbor_keyfile="SSLCertificateKeyFile $KARBOR_SSL_KEY"
|
||||
fi
|
||||
|
||||
# copy proxy vhost file
|
||||
sudo cp $KARBOR_API_APACHE_TEMPLATE $karbor_apache_conf
|
||||
sudo sed -e "
|
||||
s|%PUBLICPORT%|$karbor_api_port|g;
|
||||
s|%APACHE_NAME%|$APACHE_NAME|g;
|
||||
s|%APIWORKERS%|$API_WORKERS|g
|
||||
s|%KARBOR_BIN_DIR%|$KARBOR_BIN_DIR|g;
|
||||
s|%SSLENGINE%|$karbor_ssl|g;
|
||||
s|%SSLCERTFILE%|$karbor_certfile|g;
|
||||
s|%SSLKEYFILE%|$karbor_keyfile|g;
|
||||
s|%USER%|$STACK_USER|g;
|
||||
" -i $karbor_apache_conf
|
||||
}
|
||||
|
||||
function karbor_config_uwsgi {
|
||||
write_uwsgi_config "$KARBOR_API_UWSGI_CONF" "$KARBOR_API_UWSGI" "/$KARBOR_SERVICE_TYPE"
|
||||
}
|
||||
|
||||
# clean_karbor_api_mod_wsgi() - Remove wsgi files, disable and remove apache vhost file
|
||||
function clean_karbor_api_mod_wsgi {
|
||||
sudo rm -f $(apache_site_config_for osapi_karbor)
|
||||
}
|
||||
|
||||
function clean_karbor_api_uwsgi {
|
||||
remove_uwsgi_config "$KARBOR_API_UWSGI_CONF" "$KARBOR_API_UWSGI"
|
||||
}
|
||||
|
||||
# start_karbor_api_mod_wsgi() - Start the API processes ahead of other things
|
||||
function start_karbor_api_mod_wsgi {
|
||||
enable_apache_site osapi_karbor
|
||||
restart_apache_server
|
||||
tail_log karbor-api /var/log/$APACHE_NAME/karbor-api.log
|
||||
|
||||
echo "Waiting for Karbor API to start..."
|
||||
if ! wait_for_service $SERVICE_TIMEOUT $KARBOR_API_ENDPOINT; then
|
||||
die $LINENO "karbor-api mod_wsgi did not start"
|
||||
fi
|
||||
}
|
||||
|
||||
function start_karbor_api_uwsgi {
|
||||
run_process karbor-api "$(which uwsgi) --ini $KARBOR_API_UWSGI_CONF" ""
|
||||
|
||||
echo "Waiting for Karbor API to start..."
|
||||
if ! wait_for_service $SERVICE_TIMEOUT $KARBOR_API_ENDPOINT; then
|
||||
die $LINENO "karbor-api uwsgi did not start"
|
||||
fi
|
||||
}
|
||||
|
||||
# stop_karbor_api_mod_wsgi() - Disable the api service and stop it.
|
||||
function stop_karbor_api_mod_wsgi {
|
||||
disable_apache_site osapi_karbor
|
||||
restart_apache_server
|
||||
}
|
||||
|
||||
function stop_karbor_api_uwsgi {
|
||||
remove_uwsgi_config "$KARBOR_API_UWSGI_CONF" "$KARBOR_API_UWSGI"
|
||||
stop_process karbor-api
|
||||
}
|
||||
|
||||
function configure_karbor {
|
||||
if is_service_enabled karbor-api karbor-operationengine karbor-protection ; then
|
||||
echo "Configuring Karbor API"
|
||||
|
||||
# generate configuration file
|
||||
cd $KARBOR_DIR
|
||||
oslo-config-generator --config-file etc/oslo-config-generator/karbor.conf --output-file etc/karbor.conf.sample
|
||||
cp etc/karbor.conf.sample etc/karbor.conf
|
||||
|
||||
cp $KARBOR_DIR/etc/karbor.conf $KARBOR_CONF
|
||||
cp $KARBOR_DIR/etc/api-paste.ini $KARBOR_CONF_DIR
|
||||
|
||||
if [[ -f $KARBOR_DIR/etc/policy.json ]]; then
|
||||
cp $KARBOR_DIR/etc/policy.json $KARBOR_CONF_DIR
|
||||
fi
|
||||
|
||||
cp -R $KARBOR_DIR/etc/providers.d $KARBOR_CONF_DIR
|
||||
cp $KARBOR_DIR/devstack/providers.d/* $KARBOR_CONF_DIR/providers.d
|
||||
|
||||
iniset $KARBOR_CONF DEFAULT debug $ENABLE_DEBUG_LOG_LEVEL
|
||||
iniset $KARBOR_CONF DEFAULT use_syslog $SYSLOG
|
||||
iniset $KARBOR_CONF DEFAULT min_interval $KARBOR_SCHEDULED_MIN_INTERVAL
|
||||
iniset $KARBOR_CONF DEFAULT min_window_time $KARBOR_SCHEDULED_MIN_WINDOW_TIME
|
||||
iniset $KARBOR_CONF DEFAULT max_window_time $KARBOR_SCHEDULED_MAX_WINDOW_TIME
|
||||
echo "Configuring Karbor API Database"
|
||||
iniset $KARBOR_CONF database connection `database_connection_url karbor`
|
||||
iniset_rpc_backend karbor $KARBOR_CONF
|
||||
|
||||
# Configure for trustee
|
||||
iniset $KARBOR_CONF trustee auth_type password
|
||||
iniset $KARBOR_CONF trustee auth_url $KEYSTONE_AUTH_URI
|
||||
iniset $KARBOR_CONF trustee username $KARBOR_TRUSTEE_USER
|
||||
iniset $KARBOR_CONF trustee password $SERVICE_PASSWORD
|
||||
iniset $KARBOR_CONF trustee user_domain_id default
|
||||
|
||||
setup_colorized_logging $KARBOR_CONF DEFAULT
|
||||
echo "Configuring Karbor API colorized"
|
||||
if is_service_enabled keystone; then
|
||||
|
||||
echo "Configuring Karbor keystone Auth"
|
||||
create_karbor_cache_dir
|
||||
|
||||
# Configure auth token middleware
|
||||
configure_auth_token_middleware $KARBOR_CONF karbor \
|
||||
$KARBOR_AUTH_CACHE_DIR
|
||||
|
||||
|
||||
# Configure for clients_keystone
|
||||
iniset $KARBOR_CONF clients_keystone auth_uri $KEYSTONE_AUTH_URI
|
||||
|
||||
# Config karbor client
|
||||
iniset $KARBOR_CONF karbor_client service_name $KARBOR_SERVICE_NAME
|
||||
iniset $KARBOR_CONF karbor_client service_type $KARBOR_SERVICE_TYPE
|
||||
iniset $KARBOR_CONF karbor_client version 1
|
||||
|
||||
else
|
||||
iniset $KARBOR_CONF DEFAULT auth_strategy noauth
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
function configure_providers {
|
||||
if is_swift_enabled; then
|
||||
echo_summary "Configuring Swift Bank"
|
||||
iniset $KARBOR_CONF_DIR/providers.d/openstack-infra.conf swift_client swift_key $SERVICE_PASSWORD
|
||||
fi
|
||||
}
|
||||
|
||||
function create_karbor_cache_dir {
|
||||
|
||||
# Delete existing dir
|
||||
sudo rm -rf $KARBOR_AUTH_CACHE_DIR
|
||||
sudo mkdir -p $KARBOR_AUTH_CACHE_DIR
|
||||
sudo chown `whoami` $KARBOR_AUTH_CACHE_DIR
|
||||
|
||||
}
|
||||
|
||||
function install_karborclient {
|
||||
if use_library_from_git "python-karborclient"; then
|
||||
echo_summary "Installing Karbor Client from git"
|
||||
git_clone $KARBORCLIENT_REPO $KARBORCLIENT_DIR $KARBORCLIENT_BRANCH
|
||||
setup_develop $KARBORCLIENT_DIR
|
||||
fi
|
||||
}
|
||||
|
||||
is_karbor_enabled
|
||||
|
||||
if [[ "$Q_ENABLE_KARBOR" == "True" ]]; then
|
||||
if [[ "$1" == "stack" && "$2" == "pre-install" ]]; then
|
||||
echo summary "Karbor pre-install"
|
||||
elif [[ "$1" == "stack" && "$2" == "install" ]]; then
|
||||
install_karborclient
|
||||
|
||||
echo_summary "Installing Karbor"
|
||||
|
||||
setup_package $KARBOR_DIR -e
|
||||
_create_karbor_conf_dir
|
||||
|
||||
elif [[ "$1" == "stack" && "$2" == "post-config" ]]; then
|
||||
echo_summary "Configuring Karbor"
|
||||
|
||||
configure_karbor
|
||||
configure_providers
|
||||
|
||||
if [[ "$KARBOR_DEPLOY" == "mod_wsgi" ]]; then
|
||||
karbor_config_apache_wsgi
|
||||
elif [[ "$KARBOR_DEPLOY" == "uwsgi" ]]; then
|
||||
karbor_config_uwsgi
|
||||
fi
|
||||
|
||||
echo export PYTHONPATH=\$PYTHONPATH:$KARBOR_DIR >> $RC_DIR/.localrc.auto
|
||||
|
||||
elif [[ "$1" == "stack" && "$2" == "extra" ]]; then
|
||||
|
||||
echo_summary "Creating Karbor entities for auth service"
|
||||
create_karbor_accounts
|
||||
|
||||
echo_summary "Initializing Karbor Service"
|
||||
|
||||
if is_service_enabled $DATABASE_BACKENDS; then
|
||||
# (re)create karbor database
|
||||
recreate_database karbor utf8
|
||||
|
||||
# Migrate karbor database
|
||||
$KARBOR_BIN_DIR/karbor-manage db sync
|
||||
fi
|
||||
if is_service_enabled karbor-api; then
|
||||
if [[ "$KARBOR_DEPLOY" == "mod_wsgi" ]]; then
|
||||
start_karbor_api_mod_wsgi
|
||||
elif [[ "$KARBOR_DEPLOY" == "uwsgi" ]]; then
|
||||
start_karbor_api_uwsgi
|
||||
fi
|
||||
fi
|
||||
if is_service_enabled karbor-operationengine; then
|
||||
run_process karbor-operationengine "$KARBOR_BIN_DIR/karbor-operationengine --config-file $KARBOR_CONF"
|
||||
fi
|
||||
if is_service_enabled karbor-protection; then
|
||||
run_process karbor-protection "$KARBOR_BIN_DIR/karbor-protection --config-file $KARBOR_CONF"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ "$1" == "unstack" ]]; then
|
||||
|
||||
if is_service_enabled karbor-api; then
|
||||
if [[ "$KARBOR_DEPLOY" == "mod_wsgi" ]]; then
|
||||
stop_karbor_api_mod_wsgi
|
||||
clean_karbor_api_mod_wsgi
|
||||
elif [[ "$KARBOR_DEPLOY" == "uwsgi" ]]; then
|
||||
stop_karbor_api_uwsgi
|
||||
clean_karbor_api_uwsgi
|
||||
fi
|
||||
fi
|
||||
if is_service_enabled karbor-operationengine; then
|
||||
stop_process karbor-operationengine
|
||||
fi
|
||||
if is_service_enabled karbor-protection; then
|
||||
stop_process karbor-protection
|
||||
fi
|
||||
fi
|
||||
fi
|
@ -1,24 +0,0 @@
|
||||
[provider]
|
||||
name=EISOO Provider
|
||||
description=This provider provides data protection for applications with EISOO AnyBackup
|
||||
id=e4008868-be97-492c-be41-44e50ef2e16f
|
||||
|
||||
bank=karbor-swift-bank-plugin
|
||||
|
||||
enabled=False
|
||||
|
||||
[swift_client]
|
||||
swift_auth_url=http://127.0.0.1/identity
|
||||
swift_user=demo
|
||||
swift_key=password
|
||||
swift_tenant_name=demo
|
||||
|
||||
[swift_bank_plugin]
|
||||
lease_expire_window=120
|
||||
lease_renew_window=100
|
||||
lease_validity_window=100
|
||||
|
||||
[eisoo_client]
|
||||
eisoo_endpoint=https://172.17.238.11:9801
|
||||
eisoo_app_id=MTQ3NzAyMDg0MC41OQ==
|
||||
eisoo_app_secret=OEVBM0IyQkQ3OEZGMDIxNTFGRUVDRjMwOTIzM0IyQ0M=
|
@ -1,14 +0,0 @@
|
||||
[provider]
|
||||
name = OS Infra Provider with local file system bank
|
||||
description = This provider uses local file system as the bank of karbor
|
||||
id = 6659007d-6f66-4a0f-9cb4-17d6aded0bb9
|
||||
|
||||
plugin=karbor-volume-protection-plugin
|
||||
plugin=karbor-image-protection-plugin
|
||||
plugin=karbor-server-protection-plugin
|
||||
bank=karbor-fs-bank-plugin
|
||||
|
||||
enabled=True
|
||||
|
||||
[file_system_bank_plugin]
|
||||
file_system_bank_path=/opt/stack/karbor_fs_bank
|
@ -1,20 +0,0 @@
|
||||
[provider]
|
||||
name = OS Infra Provider with volume snapshot plugin
|
||||
description = This provider uses OpenStack's own services (swift, cinder) as storage
|
||||
id = 90d5bfea-a259-41e6-80c6-dcfcfcd9d827
|
||||
|
||||
plugin=karbor-volume-snapshot-plugin
|
||||
bank=karbor-swift-bank-plugin
|
||||
|
||||
enabled=True
|
||||
|
||||
[swift_client]
|
||||
swift_auth_url=http://127.0.0.1/identity
|
||||
swift_user=demo
|
||||
swift_key=password
|
||||
swift_tenant_name=demo
|
||||
|
||||
[swift_bank_plugin]
|
||||
lease_expire_window=120
|
||||
lease_renew_window=100
|
||||
lease_validity_window=100
|
@ -1,23 +0,0 @@
|
||||
[provider]
|
||||
name = OS Infra Provider with S3 compatible storage bank
|
||||
description = This provider uses S3 compatible storage as the bank of karbor
|
||||
id = c8e52e4d-0479-43e0-b1a1-318c86798cb8
|
||||
|
||||
plugin=karbor-volume-protection-plugin
|
||||
plugin=karbor-image-protection-plugin
|
||||
plugin=karbor-server-protection-plugin
|
||||
bank=karbor-s3-bank-plugin
|
||||
|
||||
enabled=False
|
||||
|
||||
[s3_client]
|
||||
s3_endpoint=http://127.0.0.1:7480
|
||||
s3_access_key=demo
|
||||
s3_secret_key=password
|
||||
|
||||
[s3_bank_plugin]
|
||||
lease_expire_window=600
|
||||
lease_renew_window=120
|
||||
lease_validity_window=100
|
||||
bank_s3_object_bucket=karbor
|
||||
bank_s3_lease_bucket=lease
|
@ -1,42 +0,0 @@
|
||||
# Git information
|
||||
KARBOR_REPO=${KARBOR_REPO:-https://opendev.org/openstack/karbor/}
|
||||
KARBOR_DIR=$DEST/karbor
|
||||
KARBOR_BRANCH=${KARBOR_BRANCH:-master}
|
||||
KARBORCLIENT_REPO=${KARBORCLIENT_REPO:-"https://opendev.org/openstack/python-karborclient/"}
|
||||
KARBORCLIENT_DIR=$DEST/python-karborclient
|
||||
KARBORCLIENT_BRANCH=${KARBORCLIENT_BRANCH:-master}
|
||||
|
||||
# common variables
|
||||
KARBOR_SERVICE_NAME=karbor
|
||||
KARBOR_SERVICE_TYPE=data-protect
|
||||
KARBOR_CONF_DIR=${KARBOR_CONF_DIR:-/etc/karbor}
|
||||
KARBOR_BIN_DIR=$(get_python_exec_prefix)
|
||||
KARBOR_CONF=$KARBOR_CONF_DIR/karbor.conf
|
||||
KARBOR_TRUSTEE_USER=karbor
|
||||
KARBOR_SCHEDULED_MIN_INTERVAL=60
|
||||
KARBOR_SCHEDULED_MIN_WINDOW_TIME=20
|
||||
KARBOR_SCHEDULED_MAX_WINDOW_TIME=30
|
||||
|
||||
KARBOR_API_UWSGI_CONF=$KARBOR_CONF_DIR/karbor-uwsgi.ini
|
||||
KARBOR_API_UWSGI=$KARBOR_BIN_DIR/karbor-wsgi
|
||||
|
||||
# karbor rest api
|
||||
KARBOR_API=$KARBOR_DIR/karbor/cmd/api.py
|
||||
KARBOR_API_APACHE_TEMPLATE=$KARBOR_DIR/devstack/files/apache-karbor-api.template
|
||||
|
||||
KARBOR_API_LISTEN_ADDRESS=${KARBOR_API_LISTEN_ADDRESS:-0.0.0.0}
|
||||
KARBOR_API_HOST=${KARBOR_API_HOST:-$SERVICE_HOST}
|
||||
KARBOR_API_PORT=${KARBOR_API_PORT:-8799}
|
||||
KARBOR_API_PROTOCOL=${KARBOR_API_PROTOCOL:-$SERVICE_PROTOCOL}
|
||||
if [[ "$WSGI_MODE" == "uwsgi" ]]; then
|
||||
KARBOR_DEPLOY=uwsgi
|
||||
KARBOR_API_ENDPOINT="$KARBOR_API_PROTOCOL://$KARBOR_API_HOST/$KARBOR_SERVICE_TYPE/v1/\$(project_id)s"
|
||||
else
|
||||
KARBOR_DEPLOY=mod_wsgi
|
||||
KARBOR_API_ENDPOINT="$KARBOR_API_PROTOCOL://$KARBOR_API_HOST:$KARBOR_API_PORT/v1/\$(project_id)s"
|
||||
fi
|
||||
|
||||
|
||||
KARBOR_AUTH_CACHE_DIR=${KARBOR_AUTH_CACHE_DIR:-/var/cache/karbor}
|
||||
|
||||
export PYTHONPATH=$PYTHONPATH:$KARBOR_DIR
|
Before Width: | Height: | Size: 53 KiB |
Before Width: | Height: | Size: 46 KiB |
Before Width: | Height: | Size: 55 KiB |
Before Width: | Height: | Size: 51 KiB |
@ -1,57 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="370px" style="width:612px;height:370px;" version="1.1" viewBox="0 0 612 370" width="612px">
|
||||
<defs>
|
||||
<filter height="300%" id="f1" width="300%" x="-1" y="-1">
|
||||
<feGaussianBlur result="blurOut" stdDeviation="2.0" />
|
||||
<feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0" />
|
||||
<feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3" />
|
||||
<feBlend in="SourceGraphic" in2="blurOut3" mode="normal" />
|
||||
</filter>
|
||||
</defs>
|
||||
<g>
|
||||
<text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="175" x="223" y="16.708">Karbor Protectables</text>
|
||||
<polygon fill="#DDDDDD" points="43.5,28.9531,43.5,104.1406,576.5,104.1406,576.5,28.9531,43.5,28.9531" style="stroke: #000000; stroke-width: 1.0;" />
|
||||
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="474" x="49.5" y="46.9482">This file contains the dependecy between protectables in the default</text>
|
||||
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="514" x="49.5" y="63.2451">distribution of Karbor. The arrows, similar to inheritance point to the parent</text>
|
||||
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="521" x="49.5" y="79.542">since Protectables define what types they depend on so this reflects who is</text>
|
||||
<text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="216" x="49.5" y="95.8389">responsible for the connection.</text>
|
||||
<rect fill="#FEFECE" filter="url(#f1)" height="39.9688" style="stroke: #A80036; stroke-width: 1.5;" width="120" x="6" y="321.1406" />
|
||||
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="114" x="9" y="337.2793">OS::Glance::Image</text>
|
||||
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="125" y1="345.1094" y2="345.1094" />
|
||||
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="125" y1="353.1094" y2="353.1094" />
|
||||
<rect fill="#FEFECE" filter="url(#f1)" height="39.9688" style="stroke: #A80036; stroke-width: 1.5;" width="110" x="90" y="221.1406" />
|
||||
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="104" x="93" y="237.2793">OS::Nova::Server</text>
|
||||
<line style="stroke: #A80036; stroke-width: 1.5;" x1="91" x2="199" y1="245.1094" y2="245.1094" />
|
||||
<line style="stroke: #A80036; stroke-width: 1.5;" x1="91" x2="199" y1="253.1094" y2="253.1094" />
|
||||
<rect fill="#FEFECE" filter="url(#f1)" height="39.9688" style="stroke: #A80036; stroke-width: 1.5;" width="140" x="183" y="121.1406" />
|
||||
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="134" x="186" y="137.2793">OS::Keystone::Project</text>
|
||||
<line style="stroke: #A80036; stroke-width: 1.5;" x1="184" x2="322" y1="145.1094" y2="145.1094" />
|
||||
<line style="stroke: #A80036; stroke-width: 1.5;" x1="184" x2="322" y1="153.1094" y2="153.1094" />
|
||||
<rect fill="#FEFECE" filter="url(#f1)" height="39.9688" style="stroke: #A80036; stroke-width: 1.5;" width="125" x="175.5" y="321.1406" />
|
||||
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="119" x="178.5" y="337.2793">OS::Cinder::Volume</text>
|
||||
<line style="stroke: #A80036; stroke-width: 1.5;" x1="176.5" x2="299.5" y1="345.1094" y2="345.1094" />
|
||||
<line style="stroke: #A80036; stroke-width: 1.5;" x1="176.5" x2="299.5" y1="353.1094" y2="353.1094" />
|
||||
<rect fill="#FEFECE" filter="url(#f1)" height="39.9688" style="stroke: #A80036; stroke-width: 1.5;" width="146" x="306" y="221.1406" />
|
||||
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="140" x="309" y="237.2793">OS::Neutron::Topology</text>
|
||||
<line style="stroke: #A80036; stroke-width: 1.5;" x1="307" x2="451" y1="245.1094" y2="245.1094" />
|
||||
<line style="stroke: #A80036; stroke-width: 1.5;" x1="307" x2="451" y1="253.1094" y2="253.1094" />
|
||||
<rect fill="#FEFECE" filter="url(#f1)" height="39.9688" style="stroke: #A80036; stroke-width: 1.5;" width="116" x="487" y="221.1406" />
|
||||
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="110" x="490" y="237.2793">OS::Manila::Share</text>
|
||||
<line style="stroke: #A80036; stroke-width: 1.5;" x1="488" x2="602" y1="245.1094" y2="245.1094" />
|
||||
<line style="stroke: #A80036; stroke-width: 1.5;" x1="488" x2="602" y1="253.1094" y2="253.1094" />
|
||||
<path d="M116.496,277.4996 C104.7183,292.1104 91.5229,308.4793 81.5754,320.8192 " fill="none" style="stroke: #A80036; stroke-width: 1.0;" />
|
||||
<polygon fill="none" points="111.39,272.6798,129.392,261.5022,122.29,281.4662,111.39,272.6798" style="stroke: #A80036; stroke-width: 1.0;" />
|
||||
<path d="M163.291,160.0376 C129.059,171.5966 93.2034,190.4656 72,221.1406 C51.416,250.9196 56.1704,295.5937 61.2398,320.883 " fill="none" style="stroke: #A80036; stroke-width: 1.0;" />
|
||||
<polygon fill="none" points="161.414,153.2916,182.585,154.1916,165.474,166.6906,161.414,153.2916" style="stroke: #A80036; stroke-width: 1.0;" />
|
||||
<path d="M177.204,276.0761 C191.403,291.0385 207.572,308.0769 219.664,320.8192 " fill="none" style="stroke: #A80036; stroke-width: 1.0;" />
|
||||
<polygon fill="none" points="172.063,280.8282,163.374,261.5022,182.219,271.1911,172.063,280.8282" style="stroke: #A80036; stroke-width: 1.0;" />
|
||||
<path d="M250.003,181.6976 C246.806,223.8996 241.875,288.9852 239.449,321.008 " fill="none" style="stroke: #A80036; stroke-width: 1.0;" />
|
||||
<polygon fill="none" points="243.044,180.9006,251.534,161.4866,257.004,181.9576,243.044,180.9006" style="stroke: #A80036; stroke-width: 1.0;" />
|
||||
<path d="M217.053,174.7586 C200.12,190.1246 180.51,207.9186 166.027,221.0606 " fill="none" style="stroke: #A80036; stroke-width: 1.0;" />
|
||||
<polygon fill="none" points="212.405,169.5246,231.92,161.2686,221.813,179.8926,212.405,169.5246" style="stroke: #A80036; stroke-width: 1.0;" />
|
||||
<path d="M293.425,173.5816 C313.517,189.2086 337.139,207.5816 354.469,221.0606 " fill="none" style="stroke: #A80036; stroke-width: 1.0;" />
|
||||
<polygon fill="none" points="289.083,179.0726,277.593,161.2686,297.678,168.0216,289.083,179.0726" style="stroke: #A80036; stroke-width: 1.0;" />
|
||||
<path d="M328.634,167.5246 C378.412,184.2306 442.531,205.7506 488.013,221.0146 " fill="none" style="stroke: #A80036; stroke-width: 1.0;" />
|
||||
<polygon fill="none" points="326.38,174.1516,309.647,161.1526,330.835,160.8796,326.38,174.1516" style="stroke: #A80036; stroke-width: 1.0;" />
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 7.2 KiB |
@ -1,208 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="817px" style="width:1216px;height:817px;" version="1.1" viewBox="0 0 1216 817" width="1216px">
|
||||
<defs>
|
||||
<filter height="300%" id="f1" width="300%" x="-1" y="-1">
|
||||
<feGaussianBlur result="blurOut" stdDeviation="2.0" />
|
||||
<feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0" />
|
||||
<feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3" />
|
||||
<feBlend in="SourceGraphic" in2="blurOut3" mode="normal" />
|
||||
</filter>
|
||||
</defs>
|
||||
<g>
|
||||
<text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="172" x="526.5" y="16.708">"Karbor API model"</text>
|
||||
<rect fill="#FEFECE" filter="url(#f1)" height="86.4141" style="stroke: #A80036; stroke-width: 1.5;" width="136" x="1071" y="519.9531" />
|
||||
<ellipse cx="1099.95" cy="535.9531" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;" />
|
||||
<path d="M1102.9188,541.5938 Q1102.3406,541.8906 1101.7,542.0391 Q1101.0594,542.1875 1100.3563,542.1875 Q1097.8563,542.1875 1096.5359,540.5391 Q1095.2156,538.8906 1095.2156,535.7656 Q1095.2156,532.6406 1096.5359,530.9844 Q1097.8563,529.3281 1100.3563,529.3281 Q1101.0594,529.3281 1101.7078,529.4844 Q1102.3563,529.6406 1102.9188,529.9375 L1102.9188,532.6563 Q1102.2938,532.0781 1101.7,531.8047 Q1101.1063,531.5313 1100.4813,531.5313 Q1099.1375,531.5313 1098.45,532.6016 Q1097.7625,533.6719 1097.7625,535.7656 Q1097.7625,537.8594 1098.45,538.9297 Q1099.1375,540 1100.4813,540 Q1101.1063,540 1101.7,539.7266 Q1102.2938,539.4531 1102.9188,538.875 L1102.9188,541.5938 Z "
|
||||
/>
|
||||
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="73" x="1117.05" y="540.1074">Protectable</text>
|
||||
<line style="stroke: #A80036; stroke-width: 1.5;" x1="1072" x2="1206" y1="551.9531" y2="551.9531" />
|
||||
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="73" x="1077" y="566.1636">name: string</text>
|
||||
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="124" x="1077" y="578.9683">instances: []Resource</text>
|
||||
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="71" x="1077" y="591.7729">is_root: bool</text>
|
||||
<line style="stroke: #A80036; stroke-width: 1.5;" x1="1072" x2="1206" y1="598.3672" y2="598.3672" />
|
||||
<rect fill="#FEFECE" filter="url(#f1)" height="99.2188" style="stroke: #A80036; stroke-width: 1.5;" width="205" x="821.5" y="708.9531" />
|
||||
<ellipse cx="890.25" cy="724.9531" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;" />
|
||||
<path d="M893.2188,730.5938 Q892.6406,730.8906 892,731.0391 Q891.3594,731.1875 890.6563,731.1875 Q888.1563,731.1875 886.8359,729.5391 Q885.5156,727.8906 885.5156,724.7656 Q885.5156,721.6406 886.8359,719.9844 Q888.1563,718.3281 890.6563,718.3281 Q891.3594,718.3281 892.0078,718.4844 Q892.6563,718.6406 893.2188,718.9375 L893.2188,721.6563 Q892.5938,721.0781 892,720.8047 Q891.4063,720.5313 890.7813,720.5313 Q889.4375,720.5313 888.75,721.6016 Q888.0625,722.6719 888.0625,724.7656 Q888.0625,726.8594 888.75,727.9297 Q889.4375,729 890.7813,729 Q891.4063,729 892,728.7266 Q892.5938,728.4531 893.2188,727.875 L893.2188,730.5938 Z "
|
||||
/>
|
||||
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="59" x="910.75" y="729.1074">Resource</text>
|
||||
<line style="stroke: #A80036; stroke-width: 1.5;" x1="822.5" x2="1025.5" y1="740.9531" y2="740.9531" />
|
||||
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="45" x="827.5" y="755.1636">id: UUID</text>
|
||||
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="112" x="827.5" y="767.9683">type: ResourceType</text>
|
||||
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="127" x="827.5" y="780.7729">schema: JSONSchema</text>
|
||||
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="193" x="827.5" y="793.5776">dependent_resources: []Resource</text>
|
||||
<line style="stroke: #A80036; stroke-width: 1.5;" x1="822.5" x2="1025.5" y1="800.1719" y2="800.1719" />
|
||||
<rect fill="#FEFECE" filter="url(#f1)" height="48" style="stroke: #A80036; stroke-width: 1.5;" width="76" x="918" y="224.4531" />
|
||||
<ellipse cx="933" cy="240.4531" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;" />
|
||||
<path d="M935.9688,246.0938 Q935.3906,246.3906 934.75,246.5391 Q934.1094,246.6875 933.4063,246.6875 Q930.9063,246.6875 929.5859,245.0391 Q928.2656,243.3906 928.2656,240.2656 Q928.2656,237.1406 929.5859,235.4844 Q930.9063,233.8281 933.4063,233.8281 Q934.1094,233.8281 934.7578,233.9844 Q935.4063,234.1406 935.9688,234.4375 L935.9688,237.1563 Q935.3438,236.5781 934.75,236.3047 Q934.1563,236.0313 933.5313,236.0313 Q932.1875,236.0313 931.5,237.1016 Q930.8125,238.1719 930.8125,240.2656 Q930.8125,242.3594 931.5,243.4297 Q932.1875,244.5 933.5313,244.5 Q934.1563,244.5 934.75,244.2266 Q935.3438,243.9531 935.9688,243.375 L935.9688,246.0938 Z "
|
||||
/>
|
||||
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="44" x="947" y="244.6074">Trigger</text>
|
||||
<line style="stroke: #A80036; stroke-width: 1.5;" x1="919" x2="993" y1="256.4531" y2="256.4531" />
|
||||
<line style="stroke: #A80036; stroke-width: 1.5;" x1="919" x2="993" y1="264.4531" y2="264.4531" />
|
||||
<rect fill="#FEFECE" filter="url(#f1)" height="48" style="stroke: #A80036; stroke-width: 1.5;" width="113" x="801.5" y="355.9531" />
|
||||
<ellipse cx="816.5" cy="371.9531" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;" />
|
||||
<path d="M819.4688,377.5938 Q818.8906,377.8906 818.25,378.0391 Q817.6094,378.1875 816.9063,378.1875 Q814.4063,378.1875 813.0859,376.5391 Q811.7656,374.8906 811.7656,371.7656 Q811.7656,368.6406 813.0859,366.9844 Q814.4063,365.3281 816.9063,365.3281 Q817.6094,365.3281 818.2578,365.4844 Q818.9063,365.6406 819.4688,365.9375 L819.4688,368.6563 Q818.8438,368.0781 818.25,367.8047 Q817.6563,367.5313 817.0313,367.5313 Q815.6875,367.5313 815,368.6016 Q814.3125,369.6719 814.3125,371.7656 Q814.3125,373.8594 815,374.9297 Q815.6875,376 817.0313,376 Q817.6563,376 818.25,375.7266 Q818.8438,375.4531 819.4688,374.875 L819.4688,377.5938 Z "
|
||||
/>
|
||||
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="81" x="830.5" y="376.1074">TimedTrigger</text>
|
||||
<line style="stroke: #A80036; stroke-width: 1.5;" x1="802.5" x2="913.5" y1="387.9531" y2="387.9531" />
|
||||
<line style="stroke: #A80036; stroke-width: 1.5;" x1="802.5" x2="913.5" y1="395.9531" y2="395.9531" />
|
||||
<rect fill="#FEFECE" filter="url(#f1)" height="48" style="stroke: #A80036; stroke-width: 1.5;" width="111" x="949.5" y="355.9531" />
|
||||
<ellipse cx="964.5" cy="371.9531" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;" />
|
||||
<path d="M967.4688,377.5938 Q966.8906,377.8906 966.25,378.0391 Q965.6094,378.1875 964.9063,378.1875 Q962.4063,378.1875 961.0859,376.5391 Q959.7656,374.8906 959.7656,371.7656 Q959.7656,368.6406 961.0859,366.9844 Q962.4063,365.3281 964.9063,365.3281 Q965.6094,365.3281 966.2578,365.4844 Q966.9063,365.6406 967.4688,365.9375 L967.4688,368.6563 Q966.8438,368.0781 966.25,367.8047 Q965.6563,367.5313 965.0313,367.5313 Q963.6875,367.5313 963,368.6016 Q962.3125,369.6719 962.3125,371.7656 Q962.3125,373.8594 963,374.9297 Q963.6875,376 965.0313,376 Q965.6563,376 966.25,375.7266 Q966.8438,375.4531 967.4688,374.875 L967.4688,377.5938 Z "
|
||||
/>
|
||||
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="79" x="978.5" y="376.1074">EventTrigger</text>
|
||||
<line style="stroke: #A80036; stroke-width: 1.5;" x1="950.5" x2="1059.5" y1="387.9531" y2="387.9531" />
|
||||
<line style="stroke: #A80036; stroke-width: 1.5;" x1="950.5" x2="1059.5" y1="395.9531" y2="395.9531" />
|
||||
<rect fill="#FEFECE" filter="url(#f1)" height="112.0234" style="stroke: #A80036; stroke-width: 1.5;" width="132" x="6" y="506.9531" />
|
||||
<ellipse cx="34.5" cy="522.9531" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;" />
|
||||
<path d="M37.4688,528.5938 Q36.8906,528.8906 36.25,529.0391 Q35.6094,529.1875 34.9063,529.1875 Q32.4063,529.1875 31.0859,527.5391 Q29.7656,525.8906 29.7656,522.7656 Q29.7656,519.6406 31.0859,517.9844 Q32.4063,516.3281 34.9063,516.3281 Q35.6094,516.3281 36.2578,516.4844 Q36.9063,516.6406 37.4688,516.9375 L37.4688,519.6563 Q36.8438,519.0781 36.25,518.8047 Q35.6563,518.5313 35.0313,518.5313 Q33.6875,518.5313 33,519.6016 Q32.3125,520.6719 32.3125,522.7656 Q32.3125,524.8594 33,525.9297 Q33.6875,527 35.0313,527 Q35.6563,527 36.25,526.7266 Q36.8438,526.4531 37.4688,525.875 L37.4688,528.5938 Z "
|
||||
/>
|
||||
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="70" x="51.5" y="527.1074">Checkpoint</text>
|
||||
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="137" y1="538.9531" y2="538.9531" />
|
||||
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="45" x="12" y="553.1636">id: UUID</text>
|
||||
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="87" x="12" y="565.9683">tenant_id: UUID</text>
|
||||
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="113" x="12" y="578.7729">plan: ProtectionPlan</text>
|
||||
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="77" x="12" y="591.5776">status: string</text>
|
||||
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="120" x="12" y="604.3823">started_at: DateTime</text>
|
||||
<line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="137" y1="610.9766" y2="610.9766" />
|
||||
<rect fill="#FEFECE" filter="url(#f1)" height="137.6328" style="stroke: #A80036; stroke-width: 1.5;" width="234" x="277" y="493.9531" />
|
||||
<ellipse cx="343.75" cy="509.9531" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;" />
|
||||
<path d="M346.7188,515.5938 Q346.1406,515.8906 345.5,516.0391 Q344.8594,516.1875 344.1563,516.1875 Q341.6563,516.1875 340.3359,514.5391 Q339.0156,512.8906 339.0156,509.7656 Q339.0156,506.6406 340.3359,504.9844 Q341.6563,503.3281 344.1563,503.3281 Q344.8594,503.3281 345.5078,503.4844 Q346.1563,503.6406 346.7188,503.9375 L346.7188,506.6563 Q346.0938,506.0781 345.5,505.8047 Q344.9063,505.5313 344.2813,505.5313 Q342.9375,505.5313 342.25,506.6016 Q341.5625,507.6719 341.5625,509.7656 Q341.5625,511.8594 342.25,512.9297 Q342.9375,514 344.2813,514 Q344.9063,514 345.5,513.7266 Q346.0938,513.4531 346.7188,512.875 L346.7188,515.5938 Z "
|
||||
/>
|
||||
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="92" x="364.25" y="514.1074">ProtectionPlan</text>
|
||||
<line style="stroke: #A80036; stroke-width: 1.5;" x1="278" x2="510" y1="525.9531" y2="525.9531" />
|
||||
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="45" x="283" y="540.1636">id: UUID</text>
|
||||
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="114" x="283" y="552.9683">is_enabled: boolean</text>
|
||||
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="73" x="283" y="565.7729">name: string</text>
|
||||
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="112" x="283" y="578.5776">status: ePlanStatus</text>
|
||||
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="127" x="283" y="591.3823">resources: []Resource</text>
|
||||
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="222" x="283" y="604.187">protection_provider: ProtectionProvider</text>
|
||||
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="95" x="283" y="616.9917">parameters: dict</text>
|
||||
<line style="stroke: #A80036; stroke-width: 1.5;" x1="278" x2="510" y1="623.5859" y2="623.5859" />
|
||||
<rect fill="#FEFECE" filter="url(#f1)" height="99.2188" style="stroke: #A80036; stroke-width: 1.5;" width="157" x="461.5" y="41.9531" />
|
||||
<ellipse cx="476.5" cy="57.9531" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;" />
|
||||
<path d="M479.4688,63.5938 Q478.8906,63.8906 478.25,64.0391 Q477.6094,64.1875 476.9063,64.1875 Q474.4063,64.1875 473.0859,62.5391 Q471.7656,60.8906 471.7656,57.7656 Q471.7656,54.6406 473.0859,52.9844 Q474.4063,51.3281 476.9063,51.3281 Q477.6094,51.3281 478.2578,51.4844 Q478.9063,51.6406 479.4688,51.9375 L479.4688,54.6563 Q478.8438,54.0781 478.25,53.8047 Q477.6563,53.5313 477.0313,53.5313 Q475.6875,53.5313 475,54.6016 Q474.3125,55.6719 474.3125,57.7656 Q474.3125,59.8594 475,60.9297 Q475.6875,62 477.0313,62 Q477.6563,62 478.25,61.7266 Q478.8438,61.4531 479.4688,60.875 L479.4688,63.5938 Z "
|
||||
/>
|
||||
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="125" x="490.5" y="62.1074">AutomaticOperation</text>
|
||||
<line style="stroke: #A80036; stroke-width: 1.5;" x1="462.5" x2="617.5" y1="73.9531" y2="73.9531" />
|
||||
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="45" x="467.5" y="88.1636">id: UUID</text>
|
||||
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="73" x="467.5" y="100.9683">name: string</text>
|
||||
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="104" x="467.5" y="113.7729">description: string</text>
|
||||
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="87" x="467.5" y="126.5776">tenant_id: UUID</text>
|
||||
<line style="stroke: #A80036; stroke-width: 1.5;" x1="462.5" x2="617.5" y1="133.1719" y2="133.1719" />
|
||||
<rect fill="#FEFECE" filter="url(#f1)" height="66.7422" style="stroke: #A80036; stroke-width: 1.5;" width="160" x="460" y="214.9531" />
|
||||
<ellipse cx="475" cy="233.9219" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;" />
|
||||
<path d="M477.9688,239.5625 Q477.3906,239.8594 476.75,240.0078 Q476.1094,240.1563 475.4063,240.1563 Q472.9063,240.1563 471.5859,238.5078 Q470.2656,236.8594 470.2656,233.7344 Q470.2656,230.6094 471.5859,228.9531 Q472.9063,227.2969 475.4063,227.2969 Q476.1094,227.2969 476.7578,227.4531 Q477.4063,227.6094 477.9688,227.9063 L477.9688,230.625 Q477.3438,230.0469 476.75,229.7734 Q476.1563,229.5 475.5313,229.5 Q474.1875,229.5 473.5,230.5703 Q472.8125,231.6406 472.8125,233.7344 Q472.8125,235.8281 473.5,236.8984 Q474.1875,237.9688 475.5313,237.9688 Q476.1563,237.9688 476.75,237.6953 Q477.3438,237.4219 477.9688,236.8438 L477.9688,239.5625 Z "
|
||||
/>
|
||||
<text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="66" x="520" y="231.0918">«abstract»</text>
|
||||
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="128" x="489" y="245.0605">ScheduledOperation</text>
|
||||
<line style="stroke: #A80036; stroke-width: 1.5;" x1="461" x2="619" y1="252.8906" y2="252.8906" />
|
||||
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="87" x="466" y="267.1011">trigger: Trigger</text>
|
||||
<line style="stroke: #A80036; stroke-width: 1.5;" x1="461" x2="619" y1="273.6953" y2="273.6953" />
|
||||
<rect fill="#FEFECE" filter="url(#f1)" height="60.8047" style="stroke: #A80036; stroke-width: 1.5;" width="188" x="300" y="349.4531" />
|
||||
<ellipse cx="353.25" cy="365.4531" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;" />
|
||||
<path d="M356.2188,371.0938 Q355.6406,371.3906 355,371.5391 Q354.3594,371.6875 353.6563,371.6875 Q351.1563,371.6875 349.8359,370.0391 Q348.5156,368.3906 348.5156,365.2656 Q348.5156,362.1406 349.8359,360.4844 Q351.1563,358.8281 353.6563,358.8281 Q354.3594,358.8281 355.0078,358.9844 Q355.6563,359.1406 356.2188,359.4375 L356.2188,362.1563 Q355.5938,361.5781 355,361.3047 Q354.4063,361.0313 353.7813,361.0313 Q352.4375,361.0313 351.75,362.1016 Q351.0625,363.1719 351.0625,365.2656 Q351.0625,367.3594 351.75,368.4297 Q352.4375,369.5 353.7813,369.5 Q354.4063,369.5 355,369.2266 Q355.5938,368.9531 356.2188,368.375 L356.2188,371.0938 Z "
|
||||
/>
|
||||
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="73" x="373.75" y="369.6074">BackupPlan</text>
|
||||
<line style="stroke: #A80036; stroke-width: 1.5;" x1="301" x2="487" y1="381.4531" y2="381.4531" />
|
||||
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="176" x="306" y="395.6636">protection_plan: ProtectionPlan</text>
|
||||
<line style="stroke: #A80036; stroke-width: 1.5;" x1="301" x2="487" y1="402.2578" y2="402.2578" />
|
||||
<rect fill="#FEFECE" filter="url(#f1)" height="73.6094" style="stroke: #A80036; stroke-width: 1.5;" width="234" x="523" y="342.9531" />
|
||||
<ellipse cx="576.75" cy="358.9531" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;" />
|
||||
<path d="M579.7188,364.5938 Q579.1406,364.8906 578.5,365.0391 Q577.8594,365.1875 577.1563,365.1875 Q574.6563,365.1875 573.3359,363.5391 Q572.0156,361.8906 572.0156,358.7656 Q572.0156,355.6406 573.3359,353.9844 Q574.6563,352.3281 577.1563,352.3281 Q577.8594,352.3281 578.5078,352.4844 Q579.1563,352.6406 579.7188,352.9375 L579.7188,355.6563 Q579.0938,355.0781 578.5,354.8047 Q577.9063,354.5313 577.2813,354.5313 Q575.9375,354.5313 575.25,355.6016 Q574.5625,356.6719 574.5625,358.7656 Q574.5625,360.8594 575.25,361.9297 Q575.9375,363 577.2813,363 Q577.9063,363 578.5,362.7266 Q579.0938,362.4531 579.7188,361.875 L579.7188,364.5938 Z "
|
||||
/>
|
||||
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="118" x="597.25" y="363.1074">DeleteCheckpoints</text>
|
||||
<line style="stroke: #A80036; stroke-width: 1.5;" x1="524" x2="756" y1="374.9531" y2="374.9531" />
|
||||
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="73" x="529" y="389.1636">query: string</text>
|
||||
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="222" x="529" y="401.9683">protection_provider: ProtectionProvider</text>
|
||||
<line style="stroke: #A80036; stroke-width: 1.5;" x1="524" x2="756" y1="408.5625" y2="408.5625" />
|
||||
<rect fill="#FEFECE" filter="url(#f1)" height="124.8281" style="stroke: #A80036; stroke-width: 1.5;" width="312" x="581" y="500.4531" />
|
||||
<ellipse cx="674.75" cy="516.4531" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;" />
|
||||
<path d="M677.7188,522.0938 Q677.1406,522.3906 676.5,522.5391 Q675.8594,522.6875 675.1563,522.6875 Q672.6563,522.6875 671.3359,521.0391 Q670.0156,519.3906 670.0156,516.2656 Q670.0156,513.1406 671.3359,511.4844 Q672.6563,509.8281 675.1563,509.8281 Q675.8594,509.8281 676.5078,509.9844 Q677.1563,510.1406 677.7188,510.4375 L677.7188,513.1563 Q677.0938,512.5781 676.5,512.3047 Q675.9063,512.0313 675.2813,512.0313 Q673.9375,512.0313 673.25,513.1016 Q672.5625,514.1719 672.5625,516.2656 Q672.5625,518.3594 673.25,519.4297 Q673.9375,520.5 675.2813,520.5 Q675.9063,520.5 676.5,520.2266 Q677.0938,519.9531 677.7188,519.375 L677.7188,522.0938 Z "
|
||||
/>
|
||||
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="116" x="695.25" y="520.6074">ProtectionProvider</text>
|
||||
<line style="stroke: #A80036; stroke-width: 1.5;" x1="582" x2="892" y1="532.4531" y2="532.4531" />
|
||||
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="73" x="587" y="546.6636">name: string</text>
|
||||
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="104" x="587" y="559.4683">description: string</text>
|
||||
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="300" x="587" y="572.2729">extended_info_schema: [ResourceType]JSONSchema</text>
|
||||
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="263" x="587" y="585.0776">options_schema: [ResourceType]JSONSchema</text>
|
||||
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="260" x="587" y="597.8823">restore_options: [ResourceType]JSONSchema</text>
|
||||
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="145" x="587" y="610.687">checkpoints: []Checkpoint</text>
|
||||
<line style="stroke: #A80036; stroke-width: 1.5;" x1="582" x2="892" y1="617.2813" y2="617.2813" />
|
||||
<rect fill="#FEFECE" filter="url(#f1)" height="73.6094" style="stroke: #A80036; stroke-width: 1.5;" width="108" x="928" y="525.9531" />
|
||||
<ellipse cx="943" cy="541.9531" fill="#EB937F" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;" />
|
||||
<path d="M947.1094,547.9531 L939.3906,547.9531 L939.3906,535.5625 L947.1094,535.5625 L947.1094,537.7188 L941.8438,537.7188 L941.8438,540.3906 L946.6094,540.3906 L946.6094,542.5469 L941.8438,542.5469 L941.8438,545.7969 L947.1094,545.7969 L947.1094,547.9531 Z "
|
||||
/>
|
||||
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="76" x="957" y="546.1074">ePlanStatus</text>
|
||||
<line style="stroke: #A80036; stroke-width: 1.5;" x1="929" x2="1035" y1="557.9531" y2="557.9531" />
|
||||
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="41" x="934" y="572.1636">started</text>
|
||||
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="63" x="934" y="584.9683">suspended</text>
|
||||
<line style="stroke: #A80036; stroke-width: 1.5;" x1="929" x2="1035" y1="591.5625" y2="591.5625" />
|
||||
<rect fill="#FEFECE" filter="url(#f1)" height="60.8047" style="stroke: #A80036; stroke-width: 1.5;" width="122" x="931" y="60.9531" />
|
||||
<ellipse cx="946" cy="76.9531" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;" />
|
||||
<path d="M948.9688,82.5938 Q948.3906,82.8906 947.75,83.0391 Q947.1094,83.1875 946.4063,83.1875 Q943.9063,83.1875 942.5859,81.5391 Q941.2656,79.8906 941.2656,76.7656 Q941.2656,73.6406 942.5859,71.9844 Q943.9063,70.3281 946.4063,70.3281 Q947.1094,70.3281 947.7578,70.4844 Q948.4063,70.6406 948.9688,70.9375 L948.9688,73.6563 Q948.3438,73.0781 947.75,72.8047 Q947.1563,72.5313 946.5313,72.5313 Q945.1875,72.5313 944.5,73.6016 Q943.8125,74.6719 943.8125,76.7656 Q943.8125,78.8594 944.5,79.9297 Q945.1875,81 946.5313,81 Q947.1563,81 947.75,80.7266 Q948.3438,80.4531 948.9688,79.875 L948.9688,82.5938 Z "
|
||||
/>
|
||||
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="90" x="960" y="81.1074">RestoreTarget</text>
|
||||
<line style="stroke: #A80036; stroke-width: 1.5;" x1="932" x2="1052" y1="92.9531" y2="92.9531" />
|
||||
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="98" x="937" y="107.1636">keystone_uri: URI</text>
|
||||
<line style="stroke: #A80036; stroke-width: 1.5;" x1="932" x2="1052" y1="113.7578" y2="113.7578" />
|
||||
<rect fill="#FEFECE" filter="url(#f1)" height="124.8281" style="stroke: #A80036; stroke-width: 1.5;" width="171" x="653.5" y="28.9531" />
|
||||
<ellipse cx="710.25" cy="44.9531" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;" />
|
||||
<path d="M713.2188,50.5938 Q712.6406,50.8906 712,51.0391 Q711.3594,51.1875 710.6563,51.1875 Q708.1563,51.1875 706.8359,49.5391 Q705.5156,47.8906 705.5156,44.7656 Q705.5156,41.6406 706.8359,39.9844 Q708.1563,38.3281 710.6563,38.3281 Q711.3594,38.3281 712.0078,38.4844 Q712.6563,38.6406 713.2188,38.9375 L713.2188,41.6563 Q712.5938,41.0781 712,40.8047 Q711.4063,40.5313 710.7813,40.5313 Q709.4375,40.5313 708.75,41.6016 Q708.0625,42.6719 708.0625,44.7656 Q708.0625,46.8594 708.75,47.9297 Q709.4375,49 710.7813,49 Q711.4063,49 712,48.7266 Q712.5938,48.4531 713.2188,47.875 L713.2188,50.5938 Z "
|
||||
/>
|
||||
<text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="49" x="730.75" y="49.1074">Restore</text>
|
||||
<line style="stroke: #A80036; stroke-width: 1.5;" x1="654.5" x2="823.5" y1="60.9531" y2="60.9531" />
|
||||
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="45" x="659.5" y="75.1636">id: UUID</text>
|
||||
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="90" x="659.5" y="87.9683">project_id: UUID</text>
|
||||
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="123" x="659.5" y="100.7729">target: RestoreTarget</text>
|
||||
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="159" x="659.5" y="113.5776">provider: ProtectionProvider</text>
|
||||
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="130" x="659.5" y="126.3823">checkpoint: Checkpoint</text>
|
||||
<text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="99" x="659.5" y="139.187">started_at: string</text>
|
||||
<line style="stroke: #A80036; stroke-width: 1.5;" x1="654.5" x2="823.5" y1="145.7813" y2="145.7813" />
|
||||
<path d="M1092.08,606.1781 C1059.66,635.3621 1016.31,674.3731 981.76,705.4691 " fill="none" style="stroke: #A80036; stroke-width: 1.0;" />
|
||||
<polygon fill="#A80036" points="978.019,708.8356,987.3838,705.7859,981.7347,705.4899,982.0307,699.8408,978.019,708.8356" style="stroke: #A80036; stroke-width: 1.0;" />
|
||||
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="25" x="1027" y="675.02">lists</text>
|
||||
<path d="M926.167,288.8751 C909.672,310.6721 889.738,337.0141 875.699,355.5651 " fill="none" style="stroke: #A80036; stroke-width: 1.0;" />
|
||||
<polygon fill="none" points="920.829,284.3291,938.48,272.6051,931.993,292.7771,920.829,284.3291" style="stroke: #A80036; stroke-width: 1.0;" />
|
||||
<path d="M971.904,291.4851 C979.949,312.7461 989.409,337.7481 996.15,355.5651 " fill="none" style="stroke: #A80036; stroke-width: 1.0;" />
|
||||
<polygon fill="none" points="965.291,293.7881,964.76,272.6051,978.385,288.8331,965.291,293.7881" style="stroke: #A80036; stroke-width: 1.0;" />
|
||||
<path d="M151.351,562.9531 C185.2,562.9531 225.597,562.9531 263.627,562.9531 " fill="none" style="stroke: #A80036; stroke-width: 1.0;" />
|
||||
<polygon fill="#A80036" points="276.965,562.9531,267.965,558.9531,271.965,562.9531,267.965,566.9531,276.965,562.9531" style="stroke: #A80036; stroke-width: 1.0;" />
|
||||
<line style="stroke: #A80036; stroke-width: 1.0;" x1="271.965" x2="263.965" y1="562.9531" y2="562.9531" />
|
||||
<polygon fill="#A80036" points="138.328,562.9531,144.328,566.9531,150.328,562.9531,144.328,558.9531,138.328,562.9531" style="stroke: #A80036; stroke-width: 1.0;" />
|
||||
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="102" x="156.5" y="556.02">stores a copy of</text>
|
||||
<path d="M540,161.1721 C540,179.7811 540,199.0751 540,214.6871 " fill="none" style="stroke: #A80036; stroke-width: 1.0;" />
|
||||
<polygon fill="none" points="533,161.0711,540,141.0711,547,161.0711,533,161.0711" style="stroke: #A80036; stroke-width: 1.0;" />
|
||||
<path d="M633.395,248.4531 C723.017,248.4531 853.91,248.4531 917.911,248.4531 " fill="none" style="stroke: #A80036; stroke-width: 1.0;" />
|
||||
<polygon fill="#A80036" points="620.209,248.4531,626.209,252.4531,632.209,248.4531,626.209,244.4531,620.209,248.4531" style="stroke: #A80036; stroke-width: 1.0;" />
|
||||
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="261" x="638.5" y="241.52">when should the operation should trigger</text>
|
||||
<path d="M487.954,295.6171 C467.775,313.5151 445.264,333.4831 427.335,349.3851 " fill="none" style="stroke: #A80036; stroke-width: 1.0;" />
|
||||
<polygon fill="none" points="483.551,290.1661,503.158,282.1311,492.841,300.6401,483.551,290.1661" style="stroke: #A80036; stroke-width: 1.0;" />
|
||||
<path d="M394,424.0871 C394,441.0621 394,461.1331 394,480.6291 " fill="none" style="stroke: #A80036; stroke-width: 1.0;" />
|
||||
<polygon fill="#A80036" points="394,493.6541,398,484.6541,394,488.6541,390,484.6541,394,493.6541" style="stroke: #A80036; stroke-width: 1.0;" />
|
||||
<line style="stroke: #A80036; stroke-width: 1.0;" x1="394" x2="394" y1="488.6541" y2="480.6541" />
|
||||
<polygon fill="#A80036" points="394,410.8411,390,416.8411,394,422.8411,398,416.8411,394,410.8411" style="stroke: #A80036; stroke-width: 1.0;" />
|
||||
<path d="M577.576,298.1141 C588.975,312.8761 601.295,328.8301 611.953,342.6321 " fill="none" style="stroke: #A80036; stroke-width: 1.0;" />
|
||||
<polygon fill="none" points="571.918,302.2391,565.234,282.1311,582.998,293.6831,571.918,302.2391" style="stroke: #A80036; stroke-width: 1.0;" />
|
||||
<path d="M583.446,496.0381 C488.99,463.5821 365.717,436.8831 257.5,463.9531 C219.968,473.3421 181.718,491.9251 149.778,510.4801 " fill="none" style="stroke: #A80036; stroke-width: 1.0;" />
|
||||
<polygon fill="#A80036" points="138.309,517.2981,148.0892,516.1374,142.6069,514.7431,144.0012,509.2608,138.309,517.2981" style="stroke: #A80036; stroke-width: 1.0;" />
|
||||
<line style="stroke: #A80036; stroke-width: 1.0;" x1="142.6069" x2="149.484" y1="514.7431" y2="510.6551" />
|
||||
<polygon fill="none" points="595.99,500.4401,591.6528,494.6792,584.6668,496.4671,589.004,502.228,595.99,500.4401" style="stroke: #A80036; stroke-width: 1.0;" />
|
||||
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="25" x="258.5" y="460.02">lists</text>
|
||||
<path d="M523.613,616.8381 C536.882,622.0321 550.189,627.1521 563,631.9531 C644.62,662.5411 737.53,694.7821 808.652,718.9267 " fill="none" style="stroke: #A80036; stroke-width: 1.0;" />
|
||||
<polygon fill="#A80036" points="821.22,723.1859,813.9802,716.5087,816.4846,721.581,811.4123,724.0854,821.22,723.1859" style="stroke: #A80036; stroke-width: 1.0;" />
|
||||
<line style="stroke: #A80036; stroke-width: 1.0;" x1="816.4846" x2="808.9075" y1="721.581" y2="719.0133" />
|
||||
<polygon fill="#A80036" points="511.453,612.0541,515.5717,617.9733,522.6196,616.448,518.5009,610.5288,511.453,612.0541" style="stroke: #A80036; stroke-width: 1.0;" />
|
||||
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="73" x="693" y="675.02">aggregates</text>
|
||||
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="518.854" y="611.6713">1</text>
|
||||
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="10" x="803.6417" y="717.2427">N</text>
|
||||
<path d="M511.236,562.9531 C532.736,562.9531 554.235,562.9531 575.735,562.9531 " fill="none" style="stroke: #A80036; stroke-width: 1.0;" />
|
||||
<polygon fill="#A80036" points="580.906,562.9531,571.906,558.9531,575.906,562.9531,571.906,566.9531,580.906,562.9531" style="stroke: #A80036; stroke-width: 1.0;" />
|
||||
<path d="M491.882,493.8481 C519.307,478.1021 549.994,463.6161 580.5,455.4531 C714.454,419.6111 766.938,396.6081 892.5,455.4531 C921.585,469.0841 944.507,497.3261 959.871,521.4431 " fill="none" style="stroke: #A80036; stroke-width: 1.0;" />
|
||||
<polygon fill="#A80036" points="962.651,525.8941,961.2754,516.1418,960.002,521.6535,954.4904,520.3802,962.651,525.8941" style="stroke: #A80036; stroke-width: 1.0;" />
|
||||
<path d="M837.91,91.4531 C864.464,91.4531 892.723,91.4531 917.691,91.4531 " fill="none" style="stroke: #A80036; stroke-width: 1.0;" />
|
||||
<polygon fill="#A80036" points="930.806,91.4531,921.806,87.4531,925.806,91.4531,921.806,95.4531,930.806,91.4531" style="stroke: #A80036; stroke-width: 1.0;" />
|
||||
<line style="stroke: #A80036; stroke-width: 1.0;" x1="925.806" x2="917.806" y1="91.4531" y2="91.4531" />
|
||||
<polygon fill="#A80036" points="824.654,91.4531,830.654,95.4531,836.654,91.4531,830.654,87.4531,824.654,91.4531" style="stroke: #A80036; stroke-width: 1.0;" />
|
||||
<text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="70" x="842.75" y="84.52">restores to</text>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 34 KiB |
Before Width: | Height: | Size: 106 KiB |
Before Width: | Height: | Size: 79 KiB |
Before Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 2.5 KiB |
Before Width: | Height: | Size: 30 KiB |
Before Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 31 KiB |
Before Width: | Height: | Size: 57 KiB |
Before Width: | Height: | Size: 27 KiB |
Before Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 162 KiB |
Before Width: | Height: | Size: 51 KiB |
Before Width: | Height: | Size: 29 KiB |
Before Width: | Height: | Size: 47 KiB |
Before Width: | Height: | Size: 41 KiB |
Before Width: | Height: | Size: 50 KiB |
Before Width: | Height: | Size: 104 KiB |
Before Width: | Height: | Size: 32 KiB |