diff options
-rw-r--r-- | conf.py | 493 | ||||
-rwxr-xr-x | docs/Scale_Out_Workflow.png | bin | 51735 -> 0 bytes | |||
-rw-r--r-- | docs/manual_scale_out_design_time.png | bin | 0 -> 43180 bytes | |||
-rw-r--r-- | docs/manual_scale_out_run_time.png | bin | 0 -> 92284 bytes | |||
-rw-r--r-- | docs/manual_use_case.rst | 90 |
5 files changed, 58 insertions, 525 deletions
diff --git a/conf.py b/conf.py deleted file mode 100644 index b5f690d..0000000 --- a/conf.py +++ /dev/null @@ -1,493 +0,0 @@ -# -*- coding: utf-8 -*- -# -# ONAP documentation build configuration file, created by -# sphinx-quickstart on Wed Jul 19 16:25:31 2017. -# -# 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 sys -import os -import shlex -#import sphinx_bootstrap_theme - -# 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('.')) - -# -- General configuration ------------------------------------------------ - -# If your documentation needs a minimal Sphinx version, state it here. -needs_sphinx = '1.5.3' - -# Add any Sphinx extension module names here, as strings. They can be -# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom -# ones. -extensions = [ - 'sphinx.ext.autodoc', - 'sphinx.ext.doctest', - 'sphinx.ext.graphviz', - 'sphinx.ext.todo', - 'sphinx.ext.imgmath', - 'sphinx.ext.viewcode', - 'sphinxcontrib.blockdiag', - 'sphinxcontrib.needs', - 'sphinxcontrib.nwdiag', - 'sphinxcontrib.seqdiag', - 'sphinx.ext.ifconfig', - 'sphinx.ext.todo', - 'sphinxcontrib.plantuml', - 'sphinxcontrib.swaggerdoc' -] - -# Font path for seqdiag -seqdiag_fontpath = '/usr/share/fonts/truetype/dejavu/DejaVuSansCondensed.ttf' -nwdiag_fontpath = '/usr/share/fonts/truetype/dejavu/DejaVuSansCondensed.ttf' - -# Add any paths that contain templates here, relative to this directory. -templates_path = ['_templates'] - -# The suffix(es) of source filenames. -# You can specify multiple suffix as a list of string: -# source_suffix = ['.rst', '.md'] -source_suffix = '.rst' - -# The encoding of source files. -#source_encoding = 'utf-8-sig' - -# The master toctree document. -master_doc = 'index' - -# General information about the project. -project = u'' -copyright = u'2018 ONAP. Licensed under Creative Commons Attribution 4.0 International License' - - -author = u'Open Network Automation Platform' - -# The version info for the project you're documenting, acts as replacement for -# |version| and |release|, also used in various other places throughout the -# built documents. -# The short X.Y version. -version = 'master branch' -# The full version, including alpha/beta/rc tags. -release = 'master branch' - -# The language for content autogenerated by Sphinx. Refer to documentation -# for a list of supported languages. -# -# This is also used if you do content translation via gettext catalogs. -# Usually you set "language" from the command line for these cases. -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' - -# List of patterns, relative to source directory, that match files and -# directories to ignore when looking for source files. -exclude_patterns = [ - '_build' - ] - -# 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 = True - -# 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' - -# A list of ignored prefixes for module index sorting. -#modindex_common_prefix = [] - -# If true, keep warnings as "system message" paragraphs in the built documents. -#keep_warnings = False - -# If true, `todo` and `todoList` produce output, else they produce nothing. -todo_include_todos = True - - -# -- Options for HTML output ---------------------------------------------- - -# The theme to use for HTML and HTML Help pages. See the documentation for -# a list of builtin themes. -#html_theme = 'classic' -html_theme = 'sphinx_rtd_theme' - -# Theme options are theme-specific and customize the look and feel of a theme -# further. For a list of options available for each theme, see the -# documentation. -#html_theme_options = {} - -# Add any paths that contain custom themes here, relative to this directory. -#html_theme_path = sphinx_bootstrap_theme.get_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 = '_static/logo_onap_2017.png' - -# 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 = '_static/favicon.ico' - -# 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'] - -# Add any extra paths that contain custom files (such as robots.txt or -# .htaccess) here, relative to this directory. These files are copied -# directly to the root of the documentation. -#html_extra_path = [] - -# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, -# using the given strftime format. -html_last_updated_fmt = '%d-%b-%y %H:%M' - -# 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_domain_indices = 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, "Created using Sphinx" is shown in the HTML footer. Default is True. -html_show_sphinx = False - -# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. -#html_show_copyright = 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 = '' - -# This is the file name suffix for HTML files (e.g. ".xhtml"). -#html_file_suffix = None - -# Language to be used for generating the HTML full-text search index. -# Sphinx supports the following languages: -# 'da', 'de', 'en', 'es', 'fi', 'fr', 'hu', 'it', 'ja' -# 'nl', 'no', 'pt', 'ro', 'ru', 'sv', 'tr' -#html_search_language = 'en' - -# A dictionary with options for the search language support, empty by default. -# Now only 'ja' uses this config value -#html_search_options = {'type': 'default'} - -# The name of a javascript file (relative to the configuration directory) that -# implements a search results scorer. If empty, the default will be used. -#html_search_scorer = 'scorer.js' - -# Output file base name for HTML help builder. -htmlhelp_basename = 'ONAPdoc' - -# -- Options for LaTeX output --------------------------------------------- - -latex_elements = { -# The paper size ('letterpaper' or 'a4paper'). -#'papersize': 'letterpaper', - -# The font size ('10pt', '11pt' or '12pt'). -#'pointsize': '10pt', - -# Additional stuff for the LaTeX preamble. -#'preamble': '', - -# Latex figure (float) alignment -#'figure_align': 'htbp', -} - -# Grouping the document tree into LaTeX files. List of tuples -# (source start file, target name, title, -# author, documentclass [howto, manual, or own class]). -latex_documents = [ - (master_doc, 'ONAP.tex', u'ONAP Documentation', - u'ONAP Contributors', '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 - -# If true, show page references after internal links. -#latex_show_pagerefs = False - -# If true, show URL addresses after external links. -#latex_show_urls = False - -# Documents to append as an appendix to all manuals. -#latex_appendices = [] - -# If false, no module index is generated. -#latex_domain_indices = True - - -# -- Options for manual page output --------------------------------------- - -# One entry per manual page. List of tuples -# (source start file, name, description, authors, manual section). -man_pages = [ - (master_doc, 'onap', u'ONAP Documentation', - [author], 1) -] - -# If true, show URL addresses after external links. -#man_show_urls = False - - -# -- Options for Texinfo output ------------------------------------------- - -# Grouping the document tree into Texinfo files. List of tuples -# (source start file, target name, title, author, -# dir menu entry, description, category) -texinfo_documents = [ - (master_doc, 'ONAP', u'ONAP Documentation', - author, 'ONAP', 'Open Network Automation Platform', - 'Platform'), -] - -# Documents to append as an appendix to all manuals. -#texinfo_appendices = [] - -# If false, no module index is generated. -#texinfo_domain_indices = True - -# How to display URL addresses: 'footnote', 'no', or 'inline'. -#texinfo_show_urls = 'footnote' - -# If true, do not generate a @detailmenu in the "Top" node's menu. -#texinfo_no_detailmenu = False - - -# -- Options for Epub output ---------------------------------------------- - -# Bibliographic Dublin Core info. -epub_title = project -epub_author = author -epub_publisher = author -epub_copyright = copyright - -# The basename for the epub file. It defaults to the project name. -#epub_basename = project - -# The HTML theme for the epub output. Since the default themes are not optimized -# for small screen space, using the same theme for HTML and epub output is -# usually not wise. This defaults to 'epub', a theme designed to save visual -# space. -#epub_theme = 'epub' - -# The language of the text. It defaults to the language option -# or 'en' if the language is not set. -#epub_language = '' - -# The scheme of the identifier. Typical schemes are ISBN or URL. -#epub_scheme = '' - -# The unique identifier of the text. This can be a ISBN number -# or the project homepage. -#epub_identifier = '' - -# A unique identification for the text. -#epub_uid = '' - -# A tuple containing the cover image and cover page html template filenames. -#epub_cover = () - -# A sequence of (type, uri, title) tuples for the guide element of content.opf. -#epub_guide = () - -# HTML files that should be inserted before the pages created by sphinx. -# The format is a list of tuples containing the path and title. -#epub_pre_files = [] - -# HTML files shat should be inserted after the pages created by sphinx. -# The format is a list of tuples containing the path and title. -#epub_post_files = [] - -# A list of files that should not be packed into the epub file. -epub_exclude_files = ['search.html'] - -# The depth of the table of contents in toc.ncx. -#epub_tocdepth = 3 - -# Allow duplicate toc entries. -#epub_tocdup = True - -# Choose between 'default' and 'includehidden'. -#epub_tocscope = 'default' - -# Fix unsupported image types using the Pillow. -#epub_fix_images = False - -# Scale large images. -#epub_max_image_width = 0 - -# How to display URL addresses: 'footnote', 'no', or 'inline'. -#epub_show_urls = 'inline' - -# If false, no index is generated. -#epub_use_index = True - -# Patterns to ignore in linkcheck builder -linkcheck_ignore = [ - r'http://$', - r'http:/$', - r'http://10\.', - r'http://127\.', - r'http://172\.[123]', - r'http://app_host:port/', - r'http://app-host:port/', - r'http://ESR_SERVICE_IP', - r'http://ESR_SERVER_IP', - r'http://hostIP:\d+/', - r'http://load-balanced-address:\d+/', - r'http://localhost', - r'http://\$msb_address/', - r'http://\$MSB_SERVER_IP:\d+/', - r'http://msb_docker_host_ip:\d+/', - r'http://MSB_IP:MSB_PORT/', - r'http://msb.onap.org', - r'http://MSB_SERVER_IP:\d+/', - r'http://org.openecomp.', - r'http://{PDP_URL}:\d+/', - r'http://servername.domain.com', - r'http://.*simpledemo.openecomp.org', - r'http://.*simpledemo.onap.org', - r'http://.*test.att.com:\d+/', - r'http://we-are-data-router.us', - r'http://we-are-message-router.us:\d+/' - r'http://www.\[host\]:\[port\]/', - r'http://yourhostname', - r'https://$', - r'https:/$', - r'https://10\.', - r'https://127\.', - r'https://172\.[123]', - r'https://aaf.onap.org', - r'https://\$CBAM_IP', - r'https://ESR_SERVICE_IP', - r'https://ESR_SERVER_IP', - r'https://msb.onap.org', - r'https://my-subscriber-app.dcae', - r'https://\$CBAM_IP:\d+/', - r'https://load-balanced-address:\d+/', - r'https://prov.datarouternew.com:8443', - r'https://.*simpledemo.openecomp.org', - r'https://.*simpledemo.onap.org', - r'https://.*test.att.com:\d+/', - r'https://we-are-data-router.us', - r'https://we-are-message-router.us:\d+/' - ] - -from docutils.parsers.rst import directives - -needs_extra_options = { - "target": directives.unchanged, - "keyword": directives.unchanged, - "introduced": directives.unchanged, - "updated": directives.unchanged, - "impacts": directives.unchanged, - "validation_mode": directives.unchanged, - "validated_by": directives.unchanged, - "test": directives.unchanged, - "test_case": directives.unchanged, - "test_file": directives.unchanged, - "notes": directives.unchanged, -} - -needs_id_regex = "^[A-Z0-9]+-[A-Z0-9]+" -needs_id_required = True -needs_title_optional = True - -needs_template_collapse = """ -.. _{{id}}: - -{% if hide == false -%} -.. role:: needs_tag -.. role:: needs_status -.. role:: needs_type -.. role:: needs_id -.. role:: needs_title - -.. rst-class:: need -.. rst-class:: need_{{type_name}} - -.. container:: need - - `{{id}}` - {{content|indent(4)}} - - .. container:: toggle - - .. container:: header - - Details - -{% if status and status|upper != "NONE" and not hide_status %} | status: :needs_status:`{{status}}`{% endif %} -{% if tags and not hide_tags %} | tags: :needs_tag:`{{tags|join("` :needs_tag:`")}}`{% endif %} -{% if keyword %} | keyword: `{{keyword}}` {% endif %} -{% if target %} | target: `{{target}}` {% endif %} -{% if introduced %} | introduced: `{{introduced}}` {% endif %} -{% if updated %} | updated: `{{updated}}` {% endif %} -{% if impacts %} | impacts: `{{impacts}}` {% endif %} -{% if validation_mode %} | validation mode: `{{validation_mode}}` {% endif %} -{% if validated_by %} | validated by: `{{validated_by}}` {% endif %} -{% if test %} | test: `{{test}}` {% endif %} -{% if test_case %} | test case: {{test_case}} {% endif %} -{% if test_file %} | test file: `{{test_file}}` {% endif %} -{% if notes %} | notes: `{{notes}}` {% endif %} - | children: :need_incoming:`{{id}}` - | parents: :need_outgoing:`{{id}}` -{% endif -%} -""" - -def setup(app): - app.add_stylesheet("css/ribbon.css") diff --git a/docs/Scale_Out_Workflow.png b/docs/Scale_Out_Workflow.png Binary files differdeleted file mode 100755 index b1b985d..0000000 --- a/docs/Scale_Out_Workflow.png +++ /dev/null diff --git a/docs/manual_scale_out_design_time.png b/docs/manual_scale_out_design_time.png Binary files differnew file mode 100644 index 0000000..0626365 --- /dev/null +++ b/docs/manual_scale_out_design_time.png diff --git a/docs/manual_scale_out_run_time.png b/docs/manual_scale_out_run_time.png Binary files differnew file mode 100644 index 0000000..75b9e65 --- /dev/null +++ b/docs/manual_scale_out_run_time.png diff --git a/docs/manual_use_case.rst b/docs/manual_use_case.rst index ed22808..9f04418 100644 --- a/docs/manual_use_case.rst +++ b/docs/manual_use_case.rst @@ -16,54 +16,80 @@ :local: Manual Scale Out Use Case -================================== +========================= -Since its Beijing Release, ONAP will support the ability to manually scale -out VNF Components. Below is the Sequence Diagram for how Manual Scale Out -will work in ONAP. +In the Casablanca release, ONAP will support the ability to both manually and +automatically scale out a VNF component. Below is the sequence diagram +for how scaling will work. -|image0| +|scale_out_design_time| + +|scale_out_run_time| Description of Workflow ---------------------------------------------- +----------------------- + +At a high level the way Scale Out will work is: + +1. ``VF_Modules`` (VNFC’s) may be scaled out with either one of two methods: + + a. Using VID, the operator will choose to scale out a VNFC by picking + a ``VF_Module`` to scale + b. An operator may define an operating policy (and associated guard + policies) to trigger a scaling operation automatically. -At a high level the way Manual Scale Out will work is: + * As an example, the operating policy may be when the output of an + application load balancer crosses a bandwidth threshold, then increase + the number of instances of the application. + * Examples of a guard policies: - 1. Using VID, the operator will choose to scale out a VNFC by picking a - VF_Module to scale and choosing which controller is responsible for - that VNF. - 2. VID sends the Scale Out Request to SO. - 3. When SO receives the Scaling request it will first send a request to - the appropriate controller (APPC or SDNC) to execute a Healthcheck on the - VNF. - 4. Once the Healthcheck has been run, SO executes the Heat Template - associated with the VF Module requested by the VID Operator. - 5. After the new component(s) have been instantiated SO calls the - responsible controller (via DMaaP) to configure the new instances. - 6. Finally a Healthcheck is run to ensure that the entire VNF is Operating - as it should. + 1. If a scaling operation has run within the past X minutes, then do + not scale. + 2. If the number of instance is <= ``MIN_INSTANCES`` + or >= ``MAX_INSTANCES``, then do not scale. + +2. VID or Policy sends the Scale Out Request to SO. +3. When SO receives the Scaling request it will first send a request to the + appropriate controller (APPC or SDNC) to execute a health check on the VNF. +4. Once the health check has been run, SO executes the Heat Template associated + with the VF Module requested by the VID Operator or the operational policy. +5. After the new component(s) have been instantiated SO calls the responsible + controller (via DMaaP) to configure the new instances using Ansible, Chef, + or Netconf. +6. Finally a health check is run to ensure that the entire VNF is Operating + as it should. VNF Impacts ------------------------- +----------- For VNFs to make use of the Manual Scaling Capabilities of ONAP, they must support the following functionality: - 1. VNFs must support a Healthcheck as described in: `The Management Section of the ONAP VNF Guidelines <http://onap.readthedocs.io/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter7.html#vnf-rest-apis>`_. + 1. VNFs must support a Healthcheck as described in: + :doc:`The Management Section of the ONAP VNF Guidelines<../../../requirements.git/docs/Chapter7/Configuration-Management.html>`. + + a. R-41430 is the requirement dictating the need for VNF Healthchecks. + b. The health check may be supported using REST, Ansible, or Chef + + * REST health check requirements can be found in the + :doc:`REST APIs section<../../../requirements.git/docs/Chapter7/Configuration-Management.html#vnf-rest-apis>` + * The Ansible health check playbook can be found in the + :doc:`Ansible Playbook Requirements section<../../../requirements.git/docs/Chapter7/Configuration-Management.html#vnf-rest-apis#ansible-playbook-requirements>` - a. R-31809 is the requirement dictating the need for VNF Healthchecks. - b. The Ansible Healthcheck Playbook description may be found in `The Ansible Standards and Capabilities Section <http://onap.readthedocs.io/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter7.html#ansible-standards-and-capabilities>`_. + 2. R-43413 states that a "VNF MUST utilize a modular Heat Orchestration + Template design to support scaling". The description of this design may + be found in the + :doc:`ONAP VNF Modularity Overview section<../../../requirements.git/docs/Chapter5/Heat/ONAP Heat Orchestration Templates Overview.html#onap-vnf-modularity-overview>` + of the Heat Requirements. - 2. VNF Heat Templates must be built according the `VNF Modularity Rules <http://onap.readthedocs.io/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter4.html#d-vnf-modularity>`_. + a. The ``VF_Module`` to be scaled must be built according to the VNF + Modularity Rules for Incremental Modules - a. The VF_Module to be scaled must be built according the VNF - Modularity Rules for Incremental Modules. + 3. Configuration of the VNF must be done via NETCONF, Chef, or Ansible as + described in the :doc:`Configuration Management<./../../requirements.git/docs/Chapter7/Configuration-Management.html#configuration-management>` - 3. Configuration of the VNF must be done via NETCONF, Chef, or Ansible - as described in `Configuration Management <http://onap.readthedocs.io/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter7.html#c-configuration-management>`_. +.. |scale_out_design_time| image:: manual_scale_out_design_time.png +.. |scale_out_run_time| image:: manual_scale_out_run_time.png -.. |image0| image:: Scale_Out_Workflow.png - :width: 8in - :height: 9in |