From f164338a71b41ba22fa08a281a8b224c0becfadf Mon Sep 17 00:00:00 2001 From: Yuval Brik Date: Mon, 13 Jun 2016 15:38:02 +0300 Subject: [PATCH] docs: update mission statement, diagram, toc Change-Id: I605be3ab79c52fe2e01ab3c3e9fd0c02c2dd42dd --- README.rst | 14 ++-- doc/images/3-tier-app.png | Bin 0 -> 53858 bytes doc/images/3-tirApp.png | Bin 34125 -> 0 bytes doc/source/index.rst | 28 ++++--- doc/source/installation.rst | 68 +++++++++++++++- doc/source/readme.rst | 150 ++++++++++++++++++------------------ doc/source/specs/index.rst | 23 +----- 7 files changed, 169 insertions(+), 114 deletions(-) create mode 100644 doc/images/3-tier-app.png delete mode 100644 doc/images/3-tirApp.png diff --git a/README.rst b/README.rst index 9932b271..286badc1 100644 --- a/README.rst +++ b/README.rst @@ -15,27 +15,27 @@ Application Data Protection as a Service for OpenStack Mission Statement ***************** -* Formalize Application Data Protection in OpenStack (APIs, Services, Plugins, …) -* Be able to protect Any Resource in OpenStack(as well as their dependencies) -* Allow Diversity of vendor solutions, capabilities and implementations - without compromising usability +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 +* User: Protect App Deployment * Configure and manage custom protection plans on the deployed resources (topology, VMs, volumes, images, …) -* Admin : Define Protectable Resources +* 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 +* Vendors: Standard API for protection products * Create plugins that implement Protection mechanisms for different OpenStack resources diff --git a/doc/images/3-tier-app.png b/doc/images/3-tier-app.png new file mode 100644 index 0000000000000000000000000000000000000000..a2e654da69cfb895015e20517f53e32336f9600e GIT binary patch literal 53858 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

= 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 Xgg-9*gOY#YD}PYa|K{6AKM(&G&-xiT diff --git a/doc/source/index.rst b/doc/source/index.rst index 8b90ac0d..5a134cf7 100644 --- a/doc/source/index.rst +++ b/doc/source/index.rst @@ -1,15 +1,24 @@ -.. smaug documentation master file, created by - sphinx-quickstart on Tue Jul 9 22:26:36 2013. - You can adapt this file completely to your liking, but it should at least - contain the root `toctree` directive. +================================== +Smaug: Application Data Protection +================================== -Welcome to smaug's documentation! -======================================================== +Introduction +============ +Smaug is an OpenStack project that provides a pluggable framework for +protecting and restoring Data and Metadata that comprises an OpenStack-deployed +application - Application Data Protection as a Service. -Contents: +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 +Using Smaug +=========== .. toctree:: - :maxdepth: 2 + :maxdepth: 1 readme installation @@ -18,8 +27,7 @@ Contents: releasenotes Smaug Specs -================= - +=========== .. toctree:: :maxdepth: 1 diff --git a/doc/source/installation.rst b/doc/source/installation.rst index edfa9e0b..4de29943 100644 --- a/doc/source/installation.rst +++ b/doc/source/installation.rst @@ -1,4 +1,70 @@ ============ Installation ============ -TODO Add Installation Guide + +Single-node Devstack Installation +================================= +In order to install Smaug using Devstack on a single node, add the following to +your local.conf, under [[local|localrc]]: + +.. code-block:: none + + enable_plugin smaug http://git.openstack.org/openstack/smaug master + enable_plugin smaug-dashboard http://git.openstack.org/openstack/smaug-dashboard master + enable_service smaug-api + enable_service smaug-operationengine + enable_service smaug-protection + # Smaug Dashboard depends on Horizon + enable_service smaug-dashboard + +Depenencies +=========== + +Heat +~~~~ + +.. code-block:: none + + enable_service h-eng h-api h-api-cfn h-api-cw + +Swift (recommended) +~~~~~~~~~~~~~~~~~~~ + +Essential for the basic protection provider. + +.. code-block:: none + + SWIFT_REPLICAS=1 + SWIFT_HASH=66a3d6b56c1f479c8b4e70ab5c2000f5 + SWIFT_DATA_DIR=$DEST/data + enable_service s-proxy s-object s-container s-account + +Cinder (optional) +~~~~~~~~~~~~~~~~~ + +.. code-block:: none + + enable_service cinder c-api c-vol c-sch c-bak + +Glance (optional) +~~~~~~~~~~~~~~~~~ + +.. code-block:: none + + enable_service g-api g-reg + +Nova (optional) +~~~~~~~~~~~~~~~ + +.. code-block:: none + + enable_service n-cpu n-api n-crt n-cond n-sch n-novnc n-cauth + + +Neutron (optional) +~~~~~~~~~~~~~~~~~~ + +.. code-block:: none + + enable_service neutron q-svc q-agt q-dhcp q-meta + disable_service n-net diff --git a/doc/source/readme.rst b/doc/source/readme.rst index afaac62d..079428f9 100644 --- a/doc/source/readme.rst +++ b/doc/source/readme.rst @@ -1,54 +1,54 @@ -.. image:: https://raw.githubusercontent.com/openstack/smaug/master/doc/images/Smaug.png - :alt: Smaug - :align: center + +============ +Introduction +============ + +.. contents:: :depth: 2 What is Smaug? ============== -Smaug is an OpenStack project that provides a framework for Application -Data Protection as a Service. +Smaug is an OpenStack project that provides a pluggable framework for +protecting and restoring Data and Metadata that comprises an OpenStack-deployed +application - Application Data Protection as a Service. -It is named after the famous dragon from J.R.R. Tolkien's The "Hobbit", -which was known to hoard and guard the treasures of the people. +.. image:: https://raw.githubusercontent.com/openstack/smaug/master/doc/images/Smaug.png + :alt: Smaug + :align: center + :height: 150px -Mission & Scope -=============== +It is named after the famous dragon from J.R.R. Tolkien's The "Hobbit", which +was known to hoard and guard the treasures of the people. -Formalize Application Data Protection and Disaster recovery in OpenStack -(APIs, Services, Plugins ...) +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 -Be able to protect Any Resource in OpenStack(as well as their -dependencies) - -Allow Diversity of vendor solutions, capabilities and implementations -without compromising usability. Typical Use Case: 3-Tier Cloud App ================================== 3-Tier Cloud App Web/App/DB -.. image:: https://raw.githubusercontent.com/openstack/smaug/master/doc/images/ - 3-tirApp.png +.. image:: https://raw.githubusercontent.com/openstack/smaug/master/doc/images/3-tirApp.png :alt: 3-Tier Cloud App :width: 600 - :height: 455 :align: center -In order to provide full Protection for this typical use case, we would -have to protect many resources, which have some dependency between them. -The following diagram demonstrates how this dependency looks, in the -form of a tree: +In order to provide full Protection for this typical use case, we would have to +protect many resources, which have some dependency between them. The following +diagram demonstrates how this dependency looks, in the form of a tree: -.. image:: https://raw.githubusercontent.com/openstack/smaug/master/doc/images/ - resource_tree_architecture.png +.. image:: https://raw.githubusercontent.com/openstack/smaug/master/doc/images/resource_tree_architecture.png :alt: Resource Tree :width: 600 - :height: 455 :align: center -These resources can be divided into groups, each of which will be -handled by a different plugin in Smaug: +These resources can be divided into groups, each of which will be handled by a +different plugin in Smaug: - Volume - VM @@ -64,6 +64,7 @@ Protection Providers .. image:: https://raw.githubusercontent.com/openstack/smaug/master/doc/images/ protection_provider.png + :width: 600 Protection providers are defined by the administrator for each tenant. The encapsulate every aspect of the protection procedure, namely, where to place @@ -73,14 +74,14 @@ back up data, and restore data. Since there could be many protection providers with varied features and options each protection provider exposes what options it provides for each protectable. -This allows the UI to dynamically adapt to each provider and show the user -what options are available, what they mean and what values are supported. +This allows the UI to dynamically adapt to each provider and show the user what +options are available, what they mean and what values are supported. This allows us to extend the providers without updates to Smaug and allow provider implementation to easily add specialize options. Example -======= +~~~~~~~ Let’s take the OpenStack::Cinder::Volume resource *Protect* action. @@ -151,7 +152,6 @@ High Level Architecture high_level_architecture.png :alt: Solution Overview :width: 600 - :height: 455 :align: center The system is built from independent services and a scalable *Workflow @@ -162,33 +162,37 @@ Smaug API Service .. image:: https://raw.githubusercontent.com/openstack/smaug/master/doc/images/ smaug-api.png + :width: 600 -These top-level north-bound APIs expose Application Data Protection -services to the Smaug user. +These top-level north-bound APIs expose Application Data Protection services to +the Smaug user. -The purpose of the services is to maximize flexibility and accommodate -for (hopefully) any kind of protection for any type of resource, whether -it is a basic OpenStack resource (such as a VM, Volume, Image, etc.) or -some ancillary resource within an application system that is not managed -in OpenStack (such as a hardware device, an external database, etc.). +The purpose of the services is to maximize flexibility and accommodate for +(hopefully) any kind of protection for any type of resource, whether it is a +basic OpenStack resource (such as a VM, Volume, Image, etc.) or some ancillary +resource within an application system that is not managed in OpenStack (such as +a hardware device, an external database, etc.). Resource (Protectable) API --------------------------- -Enables the Smaug user to access information about which resource types are protectable (i.e. can be protected by Smaug). -In addition, enables the user to get additional information on each resource type, such as a list of actual instances and their dependencies. +Enables the Smaug user to access information about which resource types are +protectable (i.e. can be protected by Smaug). In addition, enables the user to +get additional information on each resource type, such as a list of actual +instances and their dependencies. Provider API --------------- -Enables the Smaug user to list available providers and get parameters and result schema super-set for all plugins of a specific Provider. +Enables the Smaug user to list available providers and get parameters and +result schema super-set for all plugins of a specific Provider. Plan API -------- -This API enables the Smaug user to access the protection Plan registry -and do the following operations: +This API enables the Smaug user to access the protection Plan registry and do +the following operations: - Plan CRUD. - List Plans. @@ -206,8 +210,8 @@ This API enables the Smaug user to manage protection Operations: Checkpoint API --------------- -This API enables the Smaug user to access and manage the checkpoints stored -in the protection provider: +This API enables the Smaug 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. @@ -224,17 +228,17 @@ This API enables the Smaug user restore a checkpoint on to a restore target: Smaug Schedule Service ====================== -This subsystem is responsible for scheduling and orchestrating the -execution of *Protection Plans*. +This subsystem is responsible for scheduling and orchestrating the execution of +*Protection Plans*. -The implementation can be replaced by any other external solution since it -uses only functions that are available through the north-bound API. +The implementation can be replaced by any other external solution since it uses +only functions that are available through the north-bound API. Once an entity is created it can be tracked through the north-bound API as well so that monitoring the operations is independent from the scheduler. -It will be responsible for executing the automatic operations to specific -tasks and tracking them. +It will be responsible for executing the automatic operations to specific tasks +and tracking them. Automatic Operation ------------------- @@ -250,11 +254,10 @@ Trigger Engine This sub-component of the Schedule Service is responsible for generating triggers to begin the execution of the Plan Orchestration. -It can be done based on a Timer or an Event Collector - Open to -implementation. +It can be done based on a Timer or an Event Collector - Open to implementation. -In the first version of Smaug reference implementation, it will only -provide time-based triggering. +In the first version of Smaug reference implementation, it will only provide +time-based triggering. Scheduled Operation ------------------- @@ -273,27 +276,26 @@ This subsystem is responsible for handling the following tasks: WorkFlow Engine --------------- -This pluggable component is responsible for executing and orchestrating -the flow of the plan across all protection providers. +This pluggable component is responsible for executing and orchestrating the +flow of the plan across all protection providers. Communication and Meetings ========================== -Smaug Launchpad Link\ https://launchpad.net/smaug - -Smaug Code Review\ https://review.openstack.org/#/q/smaug+status:open,n,z - -Smaug Code Repository\ https://github.com/openstack/smaug - -Smaug daily IRC Channel: #openstack-smaug - -Smaug bi-weekly IRC Meeting on (even) Tuesday at 1400 UTC in #openstack-meeting -at freenode:\ http://eavesdrop.openstack.org/#Smaug_Project_Meetingtion(s). - -Smaug Trello Board\ https://trello.com/b/Sudr4fKT/smaug +- Smaug Launchpad Link: \ https://launchpad.net/smaug +- Smaug Code Review: \ https://review.openstack.org/#/q/smaug+status:open,n,z +- Smaug Code Repository: \ https://github.com/openstack/smaug +- Smaug daily IRC Channel: #openstack-smaug +- Smaug weekly IRC Meeting on **even** Tuesday at 1500 UTC + and on **odd** Tuesday at 0900 UTC in + #openstack-meeting at freenode: \ + https://wiki.openstack.org/wiki/Meetings/smaug +- Smaug Trello Board: \ https://trello.com/b/Sudr4fKT/smaug Additional references ------------------------ -`Tokyo summit talk `_ -`Smaug overview slide `_ -`Smaug Overview blog `_ +===================== + +- `OpenStack Tokyo Summit 2015 talk `_ +- `OpenStack Austin Summit 2016 talk `_ +- `Smaug overview slide `_ +- `Smaug overview blog `_ diff --git a/doc/source/specs/index.rst b/doc/source/specs/index.rst index 9711ef96..4f3859dc 100644 --- a/doc/source/specs/index.rst +++ b/doc/source/specs/index.rst @@ -1,26 +1,5 @@ -.. - 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. - - Convention for heading levels: - ======= Heading 0 (reserved for the title in a document) - ------- Heading 1 - ~~~~~~~ Heading 2 - +++++++ Heading 3 - ''''''' Heading 4 - (Avoid deeper levels because they do not render well.) - Smaug Specs -================= +=========== This section contains detailed specification documents for different features inside Smaug.