Update overview documents

This patch updates overview documents. It also adds settings required
for publishing documents under doc directory on the readthedocs.io.

Change-Id: I89fd24cc538d09cdcfbe9a1cfb9986a4bf724266
Closes-Bug: #1662739
This commit is contained in:
Hiroaki Kobayashi 2017-02-16 18:41:25 +09:00
parent 7ccbc74eca
commit 707452ea73
15 changed files with 48 additions and 1051 deletions

View File

@ -1,416 +0,0 @@
/**
* Sphinx stylesheet -- basic theme
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/
/* -- main layout ----------------------------------------------------------- */
div.clearer {
clear: both;
}
/* -- relbar ---------------------------------------------------------------- */
div.related {
width: 100%;
font-size: 90%;
}
div.related h3 {
display: none;
}
div.related ul {
margin: 0;
padding: 0 0 0 10px;
list-style: none;
}
div.related li {
display: inline;
}
div.related li.right {
float: right;
margin-right: 5px;
}
/* -- sidebar --------------------------------------------------------------- */
div.sphinxsidebarwrapper {
padding: 10px 5px 0 10px;
}
div.sphinxsidebar {
float: left;
width: 230px;
margin-left: -100%;
font-size: 90%;
}
div.sphinxsidebar ul {
list-style: none;
}
div.sphinxsidebar ul ul,
div.sphinxsidebar ul.want-points {
margin-left: 20px;
list-style: square;
}
div.sphinxsidebar ul ul {
margin-top: 0;
margin-bottom: 0;
}
div.sphinxsidebar form {
margin-top: 10px;
}
div.sphinxsidebar input {
border: 1px solid #98dbcc;
font-family: sans-serif;
font-size: 1em;
}
img {
border: 0;
}
/* -- search page ----------------------------------------------------------- */
ul.search {
margin: 10px 0 0 20px;
padding: 0;
}
ul.search li {
padding: 5px 0 5px 20px;
background-image: url(file.png);
background-repeat: no-repeat;
background-position: 0 7px;
}
ul.search li a {
font-weight: bold;
}
ul.search li div.context {
color: #888;
margin: 2px 0 0 30px;
text-align: left;
}
ul.keywordmatches li.goodmatch a {
font-weight: bold;
}
/* -- index page ------------------------------------------------------------ */
table.contentstable {
width: 90%;
}
table.contentstable p.biglink {
line-height: 150%;
}
a.biglink {
font-size: 1.3em;
}
span.linkdescr {
font-style: italic;
padding-top: 5px;
font-size: 90%;
}
/* -- general index --------------------------------------------------------- */
table.indextable td {
text-align: left;
vertical-align: top;
}
table.indextable dl, table.indextable dd {
margin-top: 0;
margin-bottom: 0;
}
table.indextable tr.pcap {
height: 10px;
}
table.indextable tr.cap {
margin-top: 10px;
background-color: #f2f2f2;
}
img.toggler {
margin-right: 3px;
margin-top: 3px;
cursor: pointer;
}
/* -- general body styles --------------------------------------------------- */
a.headerlink {
visibility: hidden;
}
h1:hover > a.headerlink,
h2:hover > a.headerlink,
h3:hover > a.headerlink,
h4:hover > a.headerlink,
h5:hover > a.headerlink,
h6:hover > a.headerlink,
dt:hover > a.headerlink {
visibility: visible;
}
div.body p.caption {
text-align: inherit;
}
div.body td {
text-align: left;
}
.field-list ul {
padding-left: 1em;
}
.first {
}
p.rubric {
margin-top: 30px;
font-weight: bold;
}
/* -- sidebars -------------------------------------------------------------- */
div.sidebar {
margin: 0 0 0.5em 1em;
border: 1px solid #ddb;
padding: 7px 7px 0 7px;
background-color: #ffe;
width: 40%;
float: right;
}
p.sidebar-title {
font-weight: bold;
}
/* -- topics ---------------------------------------------------------------- */
div.topic {
border: 1px solid #ccc;
padding: 7px 7px 0 7px;
margin: 10px 0 10px 0;
}
p.topic-title {
font-size: 1.1em;
font-weight: bold;
margin-top: 10px;
}
/* -- admonitions ----------------------------------------------------------- */
div.admonition {
margin-top: 10px;
margin-bottom: 10px;
padding: 7px;
}
div.admonition dt {
font-weight: bold;
}
div.admonition dl {
margin-bottom: 0;
}
p.admonition-title {
margin: 0px 10px 5px 0px;
font-weight: bold;
}
div.body p.centered {
text-align: center;
margin-top: 25px;
}
/* -- tables ---------------------------------------------------------------- */
table.docutils {
border: 0;
border-collapse: collapse;
}
table.docutils td, table.docutils th {
padding: 1px 8px 1px 0;
border-top: 0;
border-left: 0;
border-right: 0;
border-bottom: 1px solid #aaa;
}
table.field-list td, table.field-list th {
border: 0 !important;
}
table.footnote td, table.footnote th {
border: 0 !important;
}
th {
text-align: left;
padding-right: 5px;
}
/* -- other body styles ----------------------------------------------------- */
dl {
margin-bottom: 15px;
}
dd p {
margin-top: 0px;
}
dd ul, dd table {
margin-bottom: 10px;
}
dd {
margin-top: 3px;
margin-bottom: 10px;
margin-left: 30px;
}
dt:target, .highlight {
background-color: #fbe54e;
}
dl.glossary dt {
font-weight: bold;
font-size: 1.1em;
}
.field-list ul {
margin: 0;
padding-left: 1em;
}
.field-list p {
margin: 0;
}
.refcount {
color: #060;
}
.optional {
font-size: 1.3em;
}
.versionmodified {
font-style: italic;
}
.system-message {
background-color: #fda;
padding: 5px;
border: 3px solid red;
}
.footnote:target {
background-color: #ffa
}
.line-block {
display: block;
margin-top: 1em;
margin-bottom: 1em;
}
.line-block .line-block {
margin-top: 0;
margin-bottom: 0;
margin-left: 1.5em;
}
/* -- code displays --------------------------------------------------------- */
pre {
overflow: auto;
}
td.linenos pre {
padding: 5px 0px;
border: 0;
background-color: transparent;
color: #aaa;
}
table.highlighttable {
margin-left: 0.5em;
}
table.highlighttable td {
padding: 0 0.5em 0 0.5em;
}
tt.descname {
background-color: transparent;
font-weight: bold;
font-size: 1.2em;
}
tt.descclassname {
background-color: transparent;
}
tt.xref, a tt {
background-color: transparent;
font-weight: bold;
}
h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt {
background-color: transparent;
}
/* -- math display ---------------------------------------------------------- */
img.math {
vertical-align: middle;
}
div.body div.math p {
text-align: center;
}
span.eqno {
float: right;
}
/* -- printout stylesheet --------------------------------------------------- */
@media print {
div.document,
div.documentwrapper,
div.bodywrapper {
margin: 0 !important;
width: 100%;
}
div.sphinxsidebar,
div.related,
div.footer,
#top-link {
display: none;
}
}

View File

@ -1,230 +0,0 @@
/**
* Sphinx stylesheet -- default theme
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/
@import url("basic.css");
/* -- page layout ----------------------------------------------------------- */
body {
font-family: sans-serif;
font-size: 100%;
background-color: #11303d;
color: #000;
margin: 0;
padding: 0;
}
div.document {
background-color: #1c4e63;
}
div.documentwrapper {
float: left;
width: 100%;
}
div.bodywrapper {
margin: 0 0 0 230px;
}
div.body {
background-color: #ffffff;
color: #000000;
padding: 0 20px 30px 20px;
}
div.footer {
color: #ffffff;
width: 100%;
padding: 9px 0 9px 0;
text-align: center;
font-size: 75%;
}
div.footer a {
color: #ffffff;
text-decoration: underline;
}
div.related {
background-color: #133f52;
line-height: 30px;
color: #ffffff;
}
div.related a {
color: #ffffff;
}
div.sphinxsidebar {
}
div.sphinxsidebar h3 {
font-family: 'Trebuchet MS', sans-serif;
color: #ffffff;
font-size: 1.4em;
font-weight: normal;
margin: 0;
padding: 0;
}
div.sphinxsidebar h3 a {
color: #ffffff;
}
div.sphinxsidebar h4 {
font-family: 'Trebuchet MS', sans-serif;
color: #ffffff;
font-size: 1.3em;
font-weight: normal;
margin: 5px 0 0 0;
padding: 0;
}
div.sphinxsidebar p {
color: #ffffff;
}
div.sphinxsidebar p.topless {
margin: 5px 10px 10px 10px;
}
div.sphinxsidebar ul {
margin: 10px;
padding: 0;
color: #ffffff;
}
div.sphinxsidebar a {
color: #98dbcc;
}
div.sphinxsidebar input {
border: 1px solid #98dbcc;
font-family: sans-serif;
font-size: 1em;
}
/* -- body styles ----------------------------------------------------------- */
a {
color: #355f7c;
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
div.body p, div.body dd, div.body li {
text-align: left;
line-height: 130%;
}
div.body h1,
div.body h2,
div.body h3,
div.body h4,
div.body h5,
div.body h6 {
font-family: 'Trebuchet MS', sans-serif;
background-color: #f2f2f2;
font-weight: normal;
color: #20435c;
border-bottom: 1px solid #ccc;
margin: 20px -20px 10px -20px;
padding: 3px 0 3px 10px;
}
div.body h1 { margin-top: 0; font-size: 200%; }
div.body h2 { font-size: 160%; }
div.body h3 { font-size: 140%; }
div.body h4 { font-size: 120%; }
div.body h5 { font-size: 110%; }
div.body h6 { font-size: 100%; }
a.headerlink {
color: #c60f0f;
font-size: 0.8em;
padding: 0 4px 0 4px;
text-decoration: none;
}
a.headerlink:hover {
background-color: #c60f0f;
color: white;
}
div.body p, div.body dd, div.body li {
text-align: left;
line-height: 130%;
}
div.admonition p.admonition-title + p {
display: inline;
}
div.admonition p {
margin-bottom: 5px;
}
div.admonition pre {
margin-bottom: 5px;
}
div.admonition ul, div.admonition ol {
margin-bottom: 5px;
}
div.note {
background-color: #eee;
border: 1px solid #ccc;
}
div.seealso {
background-color: #ffc;
border: 1px solid #ff6;
}
div.topic {
background-color: #eee;
}
div.warning {
background-color: #ffe4e4;
border: 1px solid #f66;
}
p.admonition-title {
display: inline;
}
p.admonition-title:after {
content: ":";
}
pre {
padding: 5px;
background-color: #eeffcc;
color: #333333;
line-height: 120%;
border: 1px solid #ac9;
border-left: none;
border-right: none;
}
tt {
background-color: #ecf0f3;
padding: 0 1px 0 1px;
font-size: 0.95em;
}
.warning tt {
background: #efc2c2;
}
.note tt {
background: #d6d6d6;
}

View File

@ -1,245 +0,0 @@
/*
* nature.css_t
* ~~~~~~~~~~~~
*
* Sphinx stylesheet -- nature theme.
*
* :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
*
*/
@import url("basic.css");
/* -- page layout ----------------------------------------------------------- */
body {
font-family: Arial, sans-serif;
font-size: 100%;
background-color: #111;
color: #555;
margin: 0;
padding: 0;
}
div.documentwrapper {
float: left;
width: 100%;
}
div.bodywrapper {
margin: 0 0 0 {{ theme_sidebarwidth|toint }}px;
}
hr {
border: 1px solid #B1B4B6;
}
div.document {
background-color: #eee;
}
div.body {
background-color: #ffffff;
color: #3E4349;
padding: 0 30px 30px 30px;
font-size: 0.9em;
}
div.footer {
color: #555;
width: 100%;
padding: 13px 0;
text-align: center;
font-size: 75%;
}
div.footer a {
color: #444;
text-decoration: underline;
}
div.related {
background-color: #6BA81E;
line-height: 32px;
color: #fff;
text-shadow: 0px 1px 0 #444;
font-size: 0.9em;
}
div.related a {
color: #E2F3CC;
}
div.sphinxsidebar {
font-size: 0.75em;
line-height: 1.5em;
}
div.sphinxsidebarwrapper{
padding: 20px 0;
}
div.sphinxsidebar h3,
div.sphinxsidebar h4 {
font-family: Arial, sans-serif;
color: #222;
font-size: 1.2em;
font-weight: normal;
margin: 0;
padding: 5px 10px;
background-color: #ddd;
text-shadow: 1px 1px 0 white
}
div.sphinxsidebar h4{
font-size: 1.1em;
}
div.sphinxsidebar h3 a {
color: #444;
}
div.sphinxsidebar p {
color: #888;
padding: 5px 20px;
}
div.sphinxsidebar p.topless {
}
div.sphinxsidebar ul {
margin: 10px 20px;
padding: 0;
color: #000;
}
div.sphinxsidebar a {
color: #444;
}
div.sphinxsidebar input {
border: 1px solid #ccc;
font-family: sans-serif;
font-size: 1em;
}
div.sphinxsidebar input[type=text]{
margin-left: 20px;
}
/* -- body styles ----------------------------------------------------------- */
a {
color: #005B81;
text-decoration: none;
}
a:hover {
color: #E32E00;
text-decoration: underline;
}
div.body h1,
div.body h2,
div.body h3,
div.body h4,
div.body h5,
div.body h6 {
font-family: Arial, sans-serif;
background-color: #BED4EB;
font-weight: normal;
color: #212224;
margin: 30px 0px 10px 0px;
padding: 5px 0 5px 10px;
text-shadow: 0px 1px 0 white
}
div.body h1 { border-top: 20px solid white; margin-top: 0; font-size: 200%; }
div.body h2 { font-size: 150%; background-color: #C8D5E3; }
div.body h3 { font-size: 120%; background-color: #D8DEE3; }
div.body h4 { font-size: 110%; background-color: #D8DEE3; }
div.body h5 { font-size: 100%; background-color: #D8DEE3; }
div.body h6 { font-size: 100%; background-color: #D8DEE3; }
a.headerlink {
color: #c60f0f;
font-size: 0.8em;
padding: 0 4px 0 4px;
text-decoration: none;
}
a.headerlink:hover {
background-color: #c60f0f;
color: white;
}
div.body p, div.body dd, div.body li {
line-height: 1.5em;
}
div.admonition p.admonition-title + p {
display: inline;
}
div.highlight{
background-color: white;
}
div.note {
background-color: #eee;
border: 1px solid #ccc;
}
div.seealso {
background-color: #ffc;
border: 1px solid #ff6;
}
div.topic {
background-color: #eee;
}
div.warning {
background-color: #ffe4e4;
border: 1px solid #f66;
}
p.admonition-title {
display: inline;
}
p.admonition-title:after {
content: ":";
}
pre {
padding: 10px;
background-color: White;
color: #222;
line-height: 1.2em;
border: 1px solid #C6C9CB;
font-size: 1.1em;
margin: 1.5em 0 1.5em 0;
-webkit-box-shadow: 1px 1px 1px #d8d8d8;
-moz-box-shadow: 1px 1px 1px #d8d8d8;
}
tt {
background-color: #ecf0f3;
color: #222;
/* padding: 1px 2px; */
font-size: 1.1em;
font-family: monospace;
}
.viewcode-back {
font-family: Arial, sans-serif;
}
div.viewcode-block:target {
background-color: #f4debf;
border-top: 1px solid #ac9;
border-bottom: 1px solid #ac9;
}

View File

@ -1,9 +0,0 @@
dl.toggle dt {
background-color: #eeffcc;
border: 1px solid #ac9;
display: inline;
}
dl.toggle dd {
display: none;
}

View File

@ -1,9 +0,0 @@
/*global $,document*/
$(document).ready(function () {
"use strict";
$("dl.toggle > dt").click(
function (event) {
$(this).next().toggle(250);
}
);
});

View File

@ -1,87 +0,0 @@
body {
background: #fff;
}
#header {
width: 950px;
margin: 0 auto;
height: 102px;
}
#navigation {
display: block;
float: left;
margin: 27px 0 0 25px;
padding: 0;
}
#navigation li{
float: left;
display: block;
margin-right: 25px;
}
#navigation li a {
display: block;
font-weight: normal;
text-decoration: none;
background-position: 50% 0;
padding: 20px 0 5px;
color: #353535;
font-size: 14px;
}
#navigation li a.current, #navigation li a.section {
border-bottom: 3px solid #cf2f19;
color: #cf2f19;
}
div.related {
background-color: #cde2f8;
border: 1px solid #b0d3f8;
}
div.related a {
color: #4078ba;
text-shadow: none;
}
div.sphinxsidebarwrapper {
padding-top: 0;
}
pre {
color: #555;
}
div.documentwrapper h1, div.documentwrapper h2, div.documentwrapper h3, div.documentwrapper h4, div.documentwrapper h5, div.documentwrapper h6 {
font-family: 'PT Sans', sans-serif !important;
color: #264D69;
border-bottom: 1px dotted #C5E2EA;
padding: 0;
background: none;
padding-bottom: 5px;
}
div.documentwrapper h3 {
color: #CF2F19;
}
a.headerlink {
color: #fff !important;
margin-left: 5px;
background: #CF2F19 !important;
}
div.body {
margin-left: 230px;
}
div.document {
width: 960px;
margin: 0 auto;
}
a.reference.internal em {
font-style: normal;
}

View File

@ -1,4 +0,0 @@
<h3>Useful Links</h3>
<ul>
<li><a href="https://launchpad.net/blazar">Blazar @ Launchpad</a></li>
</ul>

View File

@ -1,4 +0,0 @@
{% extends "basic/layout.html" %}
{% set css_files = css_files + ['_static/tweaks.css'] %}
{% block relbar1 %}{% endblock relbar1 %}

View File

@ -1,4 +0,0 @@
[theme]
inherit = nature
stylesheet = nature.css
pygments_style = tango

View File

@ -21,8 +21,7 @@ structure of connected leases, reservations (both physical and virtual) and
events. blazar-manager service is responsible for running events created for events. blazar-manager service is responsible for running events created for
lease and process all actions that should be done this moment. Manager uses lease and process all actions that should be done this moment. Manager uses
resource-plugins to work with concrete resources (instances, volumes, compute resource-plugins to work with concrete resources (instances, volumes, compute
hosts). blazar-manager uses Keystone trusts to commit actions on behalf of hosts).
user who has created lease before.
**resource-plugin** - responsible for exact actions to do with reserved **resource-plugin** - responsible for exact actions to do with reserved
resources (VMs, volumes, etc.) When working knows only about resource ID and resources (VMs, volumes, etc.) When working knows only about resource ID and
@ -31,6 +30,10 @@ token to use. All resource plugins work in the same process as blazar-manager.
Virtual instance reservation Virtual instance reservation
---------------------------- ----------------------------
**Note** virtual instance reservation feature is not available in current
release. Expected to be available in the future (`bug tracker`_).
.. _bug tracker: https://blueprints.launchpad.net/blazar/+spec/new-instance-reservation
Virtual instance reservation mostly looks like usual instance booting for user Virtual instance reservation mostly looks like usual instance booting for user
- he/she only passes special hints to Nova containing information about future - he/she only passes special hints to Nova containing information about future
lease - lease start and end dates, its name, etc. Special Nova API extensions lease - lease start and end dates, its name, etc. Special Nova API extensions

View File

@ -1,5 +1,3 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2013 Mirantis Inc. # Copyright (c) 2013 Mirantis Inc.
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
@ -16,9 +14,15 @@
# limitations under the License. # limitations under the License.
import sys import sys
import os import os
# 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 ----------------------------------------------------- # -- General configuration -----------------------------------------------------
# If your documentation needs a minimal Sphinx version, state it here. # If your documentation needs a minimal Sphinx version, state it here.
@ -33,14 +37,12 @@ extensions = ['sphinx.ext.autodoc',
'sphinx.ext.viewcode', 'sphinx.ext.viewcode',
'sphinxcontrib.httpdomain', 'sphinxcontrib.httpdomain',
'sphinxcontrib.pecanwsme.rest', 'sphinxcontrib.pecanwsme.rest',
'oslosphinx',
'wsmeext.sphinxext', 'wsmeext.sphinxext',
] ]
wsme_protocols = ['restjson', 'restxml'] wsme_protocols = ['restjson', 'restxml']
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
# The suffix of source filenames. # The suffix of source filenames.
source_suffix = '.rst' source_suffix = '.rst'
@ -52,7 +54,7 @@ master_doc = 'index'
# General information about the project. # General information about the project.
project = u'Blazar' project = u'Blazar'
copyright = u'2013, Mirantis Inc.;2014, Bull.' copyright = u'2013-present, OpenStack Foundation'
# The version info for the project you're documenting, acts as replacement for # The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the # |version| and |release|, also used in various other places throughout the
@ -103,8 +105,8 @@ pygments_style = 'sphinx'
# The theme to use for HTML and HTML Help pages. See the documentation for # The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes. # a list of builtin themes.
html_theme_path = ['.'] # html_theme_path = ["."]
html_theme = '_theme' # html_theme = '_theme'
# Theme options are theme-specific and customize the look and feel of a theme # Theme options are theme-specific and customize the look and feel of a theme
# further. For a list of options available for each theme, see the # further. For a list of options available for each theme, see the
@ -133,7 +135,7 @@ html_title = 'Blazar'
# Add any paths that contain custom static files (such as style sheets) here, # 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, # relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css". # so a file named "default.css" will overwrite the builtin "default.css".
html_static_path = ['_static'] #html_static_path = ['_static']
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
# using the given strftime format. # using the given strftime format.
@ -146,11 +148,7 @@ html_last_updated_fmt = os.popen(git_cmd).read()
#html_use_smartypants = True #html_use_smartypants = True
# Custom sidebar templates, maps document names to template names. # Custom sidebar templates, maps document names to template names.
html_sidebars = { #html_sidebars = {}
'index': ['sidebarlinks.html', 'localtoc.html', 'searchbox.html', 'sourcelink.html'],
'**': ['localtoc.html', 'relations.html',
'searchbox.html', 'sourcelink.html']
}
# Additional templates that should be rendered to pages, maps page names to # Additional templates that should be rendered to pages, maps page names to
# template names. # template names.
@ -203,7 +201,7 @@ latex_elements = {
# (source start file, target name, title, author, documentclass [howto/manual]). # (source start file, target name, title, author, documentclass [howto/manual]).
latex_documents = [ latex_documents = [
('index', 'blazardoc.tex', u'Blazar', ('index', 'blazardoc.tex', u'Blazar',
u'Mirantis Inc.', 'manual'), u'OpenStack Foundation', 'manual'),
] ]
# The name of an image file (relative to this directory) to place at the top of # The name of an image file (relative to this directory) to place at the top of
@ -233,7 +231,7 @@ latex_documents = [
# (source start file, name, description, authors, manual section). # (source start file, name, description, authors, manual section).
man_pages = [ man_pages = [
('index', 'blazar', u'Blazar', ('index', 'blazar', u'Blazar',
[u'Mirantis Inc.'], 1) [u'OpenStack Foundation'], 1)
] ]
# If true, show URL addresses after external links. # If true, show URL addresses after external links.
@ -247,7 +245,7 @@ man_pages = [
# dir menu entry, description, category) # dir menu entry, description, category)
texinfo_documents = [ texinfo_documents = [
('index', 'Blazar', u'Blazar', ('index', 'Blazar', u'Blazar',
u'Mirantis Inc.', 'Blazar', 'Blazar', u'OpenStack Foundation', 'Blazar', 'Blazar',
'Miscellaneous'), 'Miscellaneous'),
] ]

View File

@ -13,7 +13,6 @@ Overview
introduction introduction
architecture architecture
Roadmap <https://wiki.openstack.org/wiki/Blazar/Roadmap>
User guide User guide
---------- ----------
@ -39,4 +38,9 @@ Development guide
:maxdepth: 1 :maxdepth: 1
devref/how.to.contribute devref/how.to.contribute
devref/development.guidelines devref/development.guidelines
Release note
------------
`Release note <https://wiki.openstack.org/wiki/Blazar/Release_Notes>`_

View File

@ -6,14 +6,14 @@ Idea of creating Blazar originated with two different use cases:
* Compute host reservation (when user with admin privileges can reserve * Compute host reservation (when user with admin privileges can reserve
hardware resources that are dedicated to the sole use of a project) hardware resources that are dedicated to the sole use of a project)
* Virtual machine (instance) reservation (when user may ask reservation service * Virtual machine (instance) reservation (when user may ask reservation service
to provide him working VM not necessary now, but also in the future) to provide him working VM not necessarily now, but also in the future)
Now these ideas have been transformed to more general view: with Blazar user Now these ideas have been transformed to more general view: with Blazar, user
can request the resources of cloud environment to be provided (“leased”) to his can request the resources of cloud environment to be provided (“leased”) to his
project for specific amount on time, immediately or in future. project for specific amount of time, immediately or in the future.
Both virtual (Instances, Volumes, Networks) and hardware (full hosts with Both virtual (Instances, Volumes, Networks) and hardware (full hosts with
specific characteristics of RAM, CPU and etc) resources can be allocated via specific characteristics of RAM, CPU, etc) resources can be allocated via
“lease”. “lease”.
In terms of benefits added, Resource Reservation Service will: In terms of benefits added, Resource Reservation Service will:
@ -25,30 +25,30 @@ In terms of benefits added, Resource Reservation Service will:
* automate the processes of resource allocation and reclaiming; * automate the processes of resource allocation and reclaiming;
* provide energy efficiency for physical hosts (both compute and storage ones); * provide energy efficiency for physical hosts (both compute and storage ones);
* potentially provide leases as billable items for which customers can be * potentially provide leases as billable items for which customers can be
charged a flat fee or a premium price depending on amount of reserved cloud charged a flat fee or a premium price depending on the amount of reserved cloud
resources and their usage. resources and their usage.
Glossary of terms Glossary of terms
----------------- -----------------
**Reservation** is an allocation of certain cloud resource (Nova instance, Cinder **Reservation** is an allocation of certain cloud resource (Nova instance, Cinder
volume, compute host, etc.) to particular project. Speaking about virtual volume, compute host, etc.) to a particular project. Speaking about virtual
reservations, we may have not only simple, solid ones (like already mentioned reservations, we may have not only simple, solid ones (like already mentioned
instances and volumes), but also complex ones - like Heat stacks and Savanna instances and volumes), but also complex ones - like Heat stacks and Savanna
clusters. Reservation is characterized by status, resource type and identifier clusters. Reservation is characterized by status, resource type, identifier
and lease it belongs to. and lease it belongs to.
**Lease** is a negotiation agreement between the provider (Blazar, using OpenStack **Lease** is a negotiation agreement between the provider (Blazar, using OpenStack
resources) and the consumer (user) where the former agrees to make some kind of resources) and the consumer (user) where the former agrees to make some kind of
resources (both virtual and physical) available to latter, based on a set of resources (both virtual and physical) available to the latter, based on a set of
lease terms presented by the consumer. Here lease may be described as contract lease terms presented by the consumer. Here lease may be described as a contract
between user and reservation service about cloud resources to be provided right between user and reservation service about cloud resources to be provided right
now or later. Technically speaking, lease is a group of reservations granted to now or later. Technically speaking, lease is a group of reservations granted to
particular project upon request. Lease is characterized by start time, end a particular project upon request. Lease is characterized by start time, end
time, set of individual reservations and associated events. time, set of individual reservations and associated events.
**Event** is simply something that may happen to lease. In most simple case event **Event** is simply something that may happen to a lease. In most simple case, event
might describe lease start and lease end. Also it might be notification to user might describe lease start and lease end. Also it might be a notification to user
(e.g. about soon lease expiration) and some extra actions. (e.g. about soon lease expiration) and some extra actions.
Rationale Rationale
@ -57,9 +57,9 @@ Rationale
Blazar is created to: Blazar is created to:
* manage cloud resources not only right now, but also in the future; * manage cloud resources not only right now, but also in the future;
* have dedicated recourses on certain amount of time; * have dedicated resources for a certain amount of time;
* prepare for the peak loads and perform capacity planning; * prepare for the peak loads and perform capacity planning;
* optimise energy consumption. * optimize energy consumption.
Lease types (concepts) Lease types (concepts)
---------------------- ----------------------
@ -91,14 +91,14 @@ Lease types (concepts)
timeout has passed, lease should be marked as **active**, otherwise its timeout has passed, lease should be marked as **active**, otherwise its
status is set to **timedout**. status is set to **timedout**.
* **Delayed resource acquiring** or **scheduled reservation**. In this * **Delayed resource acquiring** or **scheduled reservation**. In this
reservation type lease is created successfully if Blazar thinks there will reservation type, lease is created successfully if Blazar thinks there will
be enough resources to process provisioning later (otherwise this request be enough resources to process provisioning later (otherwise this request
returns **failure** status). Lease is marked as **inactive** till all returns **failure** status). Lease is marked as **inactive** till all
resources will be actually provisioned. That works pretty nice and resources will be actually provisioned. That works pretty nice and
predictable speaking about compute hosts reservation (because hosts as predictable speaking about compute hosts reservation (because hosts as
resources are got not from common cloud pool, but from admin defined pool). resources are got not from common cloud pool, but from admin defined pool).
So Blazar is possible to predict these physical resources usage and use that So it is possible for Blazar to predict these physical resources usage and use
information during lease creation. If we speak about virtual reservations, that information during lease creation. If we speak about virtual reservations,
here situation is more complicated, because all resources are got from common here situation is more complicated, because all resources are got from common
cloud resources pool, and Blazar cannot guarantee there will be enough cloud resources pool, and Blazar cannot guarantee there will be enough
resources to provision them. In this failure case lease state will be marked resources to provision them. In this failure case lease state will be marked

View File

@ -32,3 +32,7 @@ SQLAlchemy<1.1.0,>=1.0.10 # MIT
stevedore>=1.17.1 # Apache-2.0 stevedore>=1.17.1 # Apache-2.0
WebOb>=1.6.0 # MIT WebOb>=1.6.0 # MIT
WSME>=0.8 # MIT WSME>=0.8 # MIT
sphinx>=1.5.1 # BSD
sphinxcontrib-httpdomain # BSD
sphinxcontrib-pecanwsme>=0.8 # Apache-2.0
oslosphinx>=4.7.0 # Apache-2.0

View File

@ -6,8 +6,6 @@ hacking!=0.13.0,<0.14,>=0.12.0 # Apache-2.0
nose # LGPL nose # LGPL
mock>=2.0 # BSD mock>=2.0 # BSD
mox>=0.5.3 # Apache-2.0 mox>=0.5.3 # Apache-2.0
sphinx!=1.3b1,<1.4,>=1.2.1 # BSD
sphinxcontrib-httpdomain # BSD
lockfile>=0.8 lockfile>=0.8
discover # BSD discover # BSD
fixtures>=3.0.0 # Apache-2.0/BSD fixtures>=3.0.0 # Apache-2.0/BSD
@ -16,10 +14,8 @@ testscenarios>=0.4 # Apache-2.0/BSD
testtools>=1.4.0 # MIT testtools>=1.4.0 # MIT
coverage>=4.0 # Apache-2.0 coverage>=4.0 # Apache-2.0
pylint==1.4.5 # GPLv2 pylint==1.4.5 # GPLv2
sphinxcontrib-pecanwsme>=0.8 # Apache-2.0
oslotest>=1.10.0 # Apache-2.0 oslotest>=1.10.0 # Apache-2.0
oslo.context>=2.12.0 # Apache-2.0 oslo.context>=2.12.0 # Apache-2.0
# Documentation # Documentation
oslosphinx>=4.7.0 # Apache-2.0
reno>=1.8.0 # Apache-2.0 reno>=1.8.0 # Apache-2.0