From b0a1820cc0fcd86722d6416a927db678908959ba Mon Sep 17 00:00:00 2001 From: Derek Schultz Date: Thu, 15 Dec 2016 15:33:50 -0700 Subject: [PATCH] docs update (#32) * doc improvements * add picasso images to docs --- README.md | 121 ++++---- docs/Makefile | 216 +++++++++++++ docs/source/conf.py | 285 ++++++++++++++++++ docs/source/deployment_guide.rst | 84 ++++++ docs/source/functions.rst | 62 ++++ .../images/intercomponent_architecture.png | Bin 0 -> 36996 bytes docs/source/images/picasso_deployment.png | Bin 0 -> 59935 bytes docs/source/images/telemetry_use_case.png | Bin 0 -> 35616 bytes docs/source/index.rst | 23 ++ tox.ini | 4 +- 10 files changed, 723 insertions(+), 72 deletions(-) create mode 100644 docs/Makefile create mode 100644 docs/source/conf.py create mode 100644 docs/source/deployment_guide.rst create mode 100644 docs/source/functions.rst create mode 100644 docs/source/images/intercomponent_architecture.png create mode 100644 docs/source/images/picasso_deployment.png create mode 100644 docs/source/images/telemetry_use_case.png create mode 100644 docs/source/index.rst diff --git a/README.md b/README.md index 86803ad..a6cd0a1 100644 --- a/README.md +++ b/README.md @@ -1,20 +1,15 @@ -Picasso: Functions-as-a-Service (FaaS) on OpenStack -=================================================== +# Picasso: Functions-as-a-Service (FaaS) on OpenStack -Mission -------- +## Mission -Picasso provides an API abstraction layer for Functions-as-a-Service (FaaS) on OpenStack. +Picasso aims to provide an API abstraction layer for Functions-as-a-Service (FaaS) on OpenStack. -Serverless ----------- +## What is Serverless/FaaS? -Serverless is a new paradigm in computing that enables simplicity, -efficiency and scalability for both developers and operators. -It's important to distinguish the two, because the benefits differ: +Serverless is a new paradigm in computing that enables simplicity, efficiency and scalability for both developers +and operators. It's important to distinguish the two, because the benefits differ: -Benefits for developers ------------------------ +### Benefits for developers The main benefits that most people refer to are on the developer side and they include: @@ -23,8 +18,10 @@ The main benefits that most people refer to are on the developer side and they i * Pay by the milliseconds your code is executing -- unlike a typical application that runs 24/7, and you're paying 24/7, functions only run when needed -Benefits for operators ----------------------- +Since you'll be running IronFunctions yourself, the paying part may not apply, but it does apply to +cost savings on your infrastructure bills as you'll read below. + +### Benefits for operators If you will be operating IronFunctions (the person who has to manage the servers behind the serverless), then the benefits are different, but related. @@ -39,61 +36,54 @@ then the benefits are different, but related. * Scaling is the same for all functions, you don't scale each app independently * Scaling is simply adding more IronFunctions nodes -System requirements -------------------- + +### System requirements * Operating system: Linux/MacOS * Python version: 3.5 or greater * Database: MySQL 5.7 or greater -Quick-start guide ------------------ +### Quick-start guide -Install DevStack with [IronFunctions enabled](https://github.com/iron-io/functions-devstack-plugin/blob/master/README.rst). -Pull down [Picasso sources](https://github.com/iron-io/project-picasso). +* Install DevStack with [IronFunctions enabled](https://github.com/iron-io/picasso/blob/master/devstack/README.rst) +* Clone the [Picasso source](https://github.com/iron-io/picasso) -Create Python3.5 virtualenv: +Create a Python3.5 virtualenv $ virtualenv -p python3.5 .venv $ source .venv/bin/activate -Install dependencies: +Install dependencies $ pip install -r requirements.txt -r test-requirements.txt -Install Picasso itself: +Install Picasso $ pip install -e . -Install MySQL if you haven't already, and create a new database for functions. +Install MySQL if you haven't already, and create a new database for functions $ mysql -uroot -p -e "CREATE DATABASE functions" +### Migrations -Migrations ----------- - -Once all dependencies are installed it is necessary to run database migrations. -Before that it is necessary to set env variable: +Once all dependencies are installed it is necessary to run database migrations. First, +set the following environment variable: export PICASSO_MIGRATIONS_DB=mysql+pymysql://root:root@localhost/functions -In this section please specify connection URI to your own MySQL database. -Once the file is saved, just use alembic to apply the migrations: +Use `alembic` to apply the migrations: $ alembic upgrade head -Starting a server ------------------ - -Once it is finished you will have a console script `picasso-api`: +### Starting the Picasso API server $ picasso-api --help Usage: picasso-api [OPTIONS] - + Starts Picasso API service - + Options: --host TEXT API service bind host. --port INTEGER API service bind port. @@ -104,45 +94,43 @@ Once it is finished you will have a console script `picasso-api`: --log-file TEXT Log file path --help Show this message and exit. -Minimum required options to start Picasso API service: +The following are the minimum required options to start the Picasso API service: --db-uri mysql://root:root@192.168.0.112/functions --keystone-endpoint http://192.168.0.112:5000/v3 --functions-url http://192.168.0.112:8080/v1 --log-level INFO -Creating and running Picasso inside Docker container -------------------------------------------------- +### Building and Running Picasso in Docker -As part of regular Python distribution, Picasso also has its own Docker container to run. -There are two options: - -* run from sources -* run from Docker Hub - -In order to build container from sources run following commands: +From the Picasso repo, build a Docker image: export DOCKER_HOST=tcp://: docker build -t picasso-api -f Dockerfile . -After that it is required to create correct version of [Dockerfile.env](Dockerfile.env.example). -It container all required options to start Picasso API service properly. -Once it is done run following commands: +To start the container, pass in the required env vars, by - docker run -d -p 10001:10001 --env-file Dockerfile.env picasso-api +`--env-file` example [Dockerfile.env](Dockerfile.env.example) -Navigate to your web browser to check if service is running: + docker run -d -p 10001:10001 --env-file Dockerfile.env picasso-api + +or by entering all values in `-e =` format. + +Once the container is started, check if the service in running: + +In your web browser navigate to: :10001/api -or using CLI +or using the CLI: curl -X GET http://:10001/api/swagger.json | python -mjson.tool -Examining API -------------- +### Examining the API -In [examples](examples/) folder you can find a script that examines available API endpoints, but this script relays on: +In [examples](examples/) folder you can find a script that examines available API endpoints. + +Note that this script depends on the following env vars: * `PICASSO_API_URL` - Picasso API endpoint * `OS_AUTH_URL` - OpenStack Auth URL @@ -152,27 +140,20 @@ In [examples](examples/) folder you can find a script that examines available AP * `OS_DOMAIN` - OpenStack project domain name * `OS_PROJECT_NAME` - OpenStack project name -Then just run script: +To run the script: OS_AUTH_URL=http://192.168.0.112:5000/v3 OS_PROJECT_ID=8fb76785313a4500ac5367eb44a31677 OS_USERNAME=admin OS_PASSWORD=root OS_DOMAIN=default OS_PROJECT_NAME=admin ./examples/hello-lambda.sh -Please note, that given values are project-specific, so they can't be reused. +Please note that values provided are project-specific, so they can't be reused. -API docs --------- +### API docs -As part of Picasso ReST API it is possible to discover API doc using Swagger Doc. -Once server is launched you can navigate to: +API docs are discoverable via Swagger. Just launch the Picasso API and browse to: http://:/api -to see recent API docs +### Support +You can get community support via: -Contacts --------- - -Feel free to reach us out at: - -* [Slack channel](https://open-iron.herokuapp.com/) -* [Email](https://github.com/denismakogon) + * [Slack](https://open-iron.herokuapp.com/) \ No newline at end of file diff --git a/docs/Makefile b/docs/Makefile new file mode 100644 index 0000000..f92e731 --- /dev/null +++ b/docs/Makefile @@ -0,0 +1,216 @@ +# Makefile for Sphinx documentation +# + +# You can set these variables from the command line. +SPHINXOPTS = +SPHINXBUILD = sphinx-build +PAPER = +BUILDDIR = build + +# User-friendly check for sphinx-build +ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1) +$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/) +endif + +# Internal variables. +PAPEROPT_a4 = -D latex_paper_size=a4 +PAPEROPT_letter = -D latex_paper_size=letter +ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source +# the i18n builder cannot share the environment and doctrees with the others +I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source + +.PHONY: help +help: + @echo "Please use \`make ' where is one of" + @echo " html to make standalone HTML files" + @echo " dirhtml to make HTML files named index.html in directories" + @echo " singlehtml to make a single large HTML file" + @echo " pickle to make pickle files" + @echo " json to make JSON files" + @echo " htmlhelp to make HTML files and a HTML help project" + @echo " qthelp to make HTML files and a qthelp project" + @echo " applehelp to make an Apple Help Book" + @echo " devhelp to make HTML files and a Devhelp project" + @echo " epub to make an epub" + @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" + @echo " latexpdf to make LaTeX files and run them through pdflatex" + @echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx" + @echo " text to make text files" + @echo " man to make manual pages" + @echo " texinfo to make Texinfo files" + @echo " info to make Texinfo files and run them through makeinfo" + @echo " gettext to make PO message catalogs" + @echo " changes to make an overview of all changed/added/deprecated items" + @echo " xml to make Docutils-native XML files" + @echo " pseudoxml to make pseudoxml-XML files for display purposes" + @echo " linkcheck to check all external links for integrity" + @echo " doctest to run all doctests embedded in the documentation (if enabled)" + @echo " coverage to run coverage check of the documentation (if enabled)" + +.PHONY: clean +clean: + rm -rf $(BUILDDIR)/* + +.PHONY: html +html: + $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html + @echo + @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." + +.PHONY: dirhtml +dirhtml: + $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml + @echo + @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." + +.PHONY: singlehtml +singlehtml: + $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml + @echo + @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." + +.PHONY: pickle +pickle: + $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle + @echo + @echo "Build finished; now you can process the pickle files." + +.PHONY: json +json: + $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json + @echo + @echo "Build finished; now you can process the JSON files." + +.PHONY: htmlhelp +htmlhelp: + $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp + @echo + @echo "Build finished; now you can run HTML Help Workshop with the" \ + ".hhp project file in $(BUILDDIR)/htmlhelp." + +.PHONY: qthelp +qthelp: + $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp + @echo + @echo "Build finished; now you can run "qcollectiongenerator" with the" \ + ".qhcp project file in $(BUILDDIR)/qthelp, like this:" + @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/Picasso.qhcp" + @echo "To view the help file:" + @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/Picasso.qhc" + +.PHONY: applehelp +applehelp: + $(SPHINXBUILD) -b applehelp $(ALLSPHINXOPTS) $(BUILDDIR)/applehelp + @echo + @echo "Build finished. The help book is in $(BUILDDIR)/applehelp." + @echo "N.B. You won't be able to view it unless you put it in" \ + "~/Library/Documentation/Help or install it in your application" \ + "bundle." + +.PHONY: devhelp +devhelp: + $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp + @echo + @echo "Build finished." + @echo "To view the help file:" + @echo "# mkdir -p $$HOME/.local/share/devhelp/Picasso" + @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/Picasso" + @echo "# devhelp" + +.PHONY: epub +epub: + $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub + @echo + @echo "Build finished. The epub file is in $(BUILDDIR)/epub." + +.PHONY: latex +latex: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo + @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." + @echo "Run \`make' in that directory to run these through (pdf)latex" \ + "(use \`make latexpdf' here to do that automatically)." + +.PHONY: latexpdf +latexpdf: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo "Running LaTeX files through pdflatex..." + $(MAKE) -C $(BUILDDIR)/latex all-pdf + @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." + +.PHONY: latexpdfja +latexpdfja: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo "Running LaTeX files through platex and dvipdfmx..." + $(MAKE) -C $(BUILDDIR)/latex all-pdf-ja + @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." + +.PHONY: text +text: + $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text + @echo + @echo "Build finished. The text files are in $(BUILDDIR)/text." + +.PHONY: man +man: + $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man + @echo + @echo "Build finished. The manual pages are in $(BUILDDIR)/man." + +.PHONY: texinfo +texinfo: + $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo + @echo + @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo." + @echo "Run \`make' in that directory to run these through makeinfo" \ + "(use \`make info' here to do that automatically)." + +.PHONY: info +info: + $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo + @echo "Running Texinfo files through makeinfo..." + make -C $(BUILDDIR)/texinfo info + @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." + +.PHONY: gettext +gettext: + $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale + @echo + @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." + +.PHONY: changes +changes: + $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes + @echo + @echo "The overview file is in $(BUILDDIR)/changes." + +.PHONY: linkcheck +linkcheck: + $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck + @echo + @echo "Link check complete; look for any errors in the above output " \ + "or in $(BUILDDIR)/linkcheck/output.txt." + +.PHONY: doctest +doctest: + $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest + @echo "Testing of doctests in the sources finished, look at the " \ + "results in $(BUILDDIR)/doctest/output.txt." + +.PHONY: coverage +coverage: + $(SPHINXBUILD) -b coverage $(ALLSPHINXOPTS) $(BUILDDIR)/coverage + @echo "Testing of coverage in the sources finished, look at the " \ + "results in $(BUILDDIR)/coverage/python.txt." + +.PHONY: xml +xml: + $(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml + @echo + @echo "Build finished. The XML files are in $(BUILDDIR)/xml." + +.PHONY: pseudoxml +pseudoxml: + $(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml + @echo + @echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml." diff --git a/docs/source/conf.py b/docs/source/conf.py new file mode 100644 index 0000000..7dd1abc --- /dev/null +++ b/docs/source/conf.py @@ -0,0 +1,285 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# +# Picasso documentation build configuration file, created by +# sphinx-quickstart on Thu Nov 24 13:24:43 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 sys +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('.')) + +# -- General configuration ------------------------------------------------ + +# If your documentation needs a minimal Sphinx version, state it here. +#needs_sphinx = '1.0' + +# 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.coverage', +] + +# 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 = 'Picasso' +copyright = '2016, Iron.io' +author = 'Iron.io' + +# 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 = '0.0.1' +# The full version, including alpha/beta/rc tags. +release = '0.0.1' + +# 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 = [] + +# 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 = False + + +# -- 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 = 'alabaster' + +# 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 +# " v 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 (relative to this directory) to use as a 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'] + +# 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 = '%b %d, %Y' + +# 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 = True + +# 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 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', 'h', 'it', 'ja' +# 'nl', 'no', 'pt', 'ro', 'r', '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 = 'Picassodoc' + +# -- 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, 'Picasso.tex', 'Picasso Documentation', '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, 'picasso', 'Picasso 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, 'Picasso', 'Picasso Documentation', + author, 'Picasso', 'One line description of project.', + 'Miscellaneous'), +] + +# 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 diff --git a/docs/source/deployment_guide.rst b/docs/source/deployment_guide.rst new file mode 100644 index 0000000..93ccbf8 --- /dev/null +++ b/docs/source/deployment_guide.rst @@ -0,0 +1,84 @@ +***************************** +Picasso deployment guide +***************************** + + +DevStack +######## + +See full install guide in devstack_plugin_ + +Existing OpenStack +################## + +Required software:: + +* Python 3.5 or greater +* Go 1.7 or greater +* Glide +* OpenStack Identity (Keystone) +* Docker (single instance or clustered) + +Software that will be installed:: + +* IronFunctions +* Picasso + + +IronFunctions installation +************************** + +IronFunctions is a core component of Picasso that interacts with the Docker API. + +Run the following commands to install IronFunctions:: + + export GOPATH=~/go + export FUNCTIONS_DIR=$GOPATH/src/github.com/iron-io/functions + mkdir -p $FUNCTIONS_DIR + pushd $FUNCTIONS_DIR && GOPATH=${GOPATH} make all; popd + +Running ``$FUNCTIONS_DIR/functions`` will start IronFunctions using an embedded Bolt database running on port 8080. + +See IronFunctions configuration options_ + +Installing Picasso +****************** + +Picasso is a lightweight ReST API service to work with IronFunctions using the OpenStack Identity (Keystone) model. + + +Run the following commands to install Picasso:: + + + git clone git@github.com:iron-io/picasso.git + pip3 install -r requirements.txt + pip3 install -e . + +Review the Picasso README_ for how to get started. + +OpenStack Identity (Keystone) configuration +******************************************* + +Create a new ``functions`` service in Keystone using the OpenStack_CLI_ +This will enable the Picasso API by resolving its endpoint through the service catalog. + +Running IronFunctions in production +*********************************** + +From a deployment perspective IronFunctions is nothing more than an internal service, so its API should not be exposed to OpenStack users. + +Running Picasso in production +***************************** + +Required software:: + + Load balancer such as HaProxy or Nginx + + +The Picasso API endpoint should be available to OpenStack users, therefore it is suggested to run the API behind a load balancer. + +.. _devstack_plugin: https://github.com/iron-io/picasso/blob/master/devstack/README.rst +.. _Glide: https://github.com/Masterminds/glide +.. _options: https://github.com/iron-io/functions/blob/master/docs/options.md +.. _README: https://github.com/iron-io/picasso/blob/master/README.md +.. _OpenStack_CLI: http://docs.openstack.org/cli-reference/ \ No newline at end of file diff --git a/docs/source/functions.rst b/docs/source/functions.rst new file mode 100644 index 0000000..401cf76 --- /dev/null +++ b/docs/source/functions.rst @@ -0,0 +1,62 @@ +********* +Functions +********* + + +Writing functions +***************** + +What is a function? +################### + +Functions are small, bite sized bits of code that do one simple thing. Forget about +monoliths when using functions, just focus on the task that you want the function to perform. + +Unlike an app/API/microservice that consumes resources 24/7 whether they are in use or not, +functions are time sliced across your infrastructure and only consume resources while they are +actually doing something. + +Function composition +##################### +At a high-level, functions are comprised of applications and routes:: + + An application is essentially a grouping of functions, that put together, form an API. + + A route is a way to define a path in your application that maps to a function. + +Calling your function is as simple as requesting a URL. Each app has it's own namespace and +each route mapped to the app. + +How are functions packaged? +########################### + +Packaging a function has two parts: + +Create a Docker image for your function with an ``ENTRYPOINT``:: + + Push your Docker image to a registry (Docker Hub by default). + + Once it's pushed to a registry, you can use it by referencing it when adding a route. + +Writing functions +################# + +See the IronFunctions guide_ on writing functions. + +What functions can do +###################### + +As functions are essentially just containers, anything that runs in a container can be a function. +Functions typically useful for short-lived tasks, such as: + + * Data processing + * ETL + + +What functions cannot do +######################## + +Long running processes are not intended for functions. + + +.. _guide: https://github.com/iron-io/functions/blob/master/docs/writing.md \ No newline at end of file diff --git a/docs/source/images/intercomponent_architecture.png b/docs/source/images/intercomponent_architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..c62767adfe0705412a5a2c6e743845d838be50e9 GIT binary patch literal 36996 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

-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�?&Ln)GgS0ewwVY_XPfSXAviaJlv! zm&r*eaIN=>NYQ7i3)sv@e6YZyaSXy77zTs_L;2~=Xu-5rK4?$9+-pt0FZk?r#5gZX zF9bg;#s1)Z|4r*8(3&$Uh}QCUNn>)Nt2L!li74=P3FM`DH3CPB3ers{Q~bi;NUj@p zVLXgFfs)^Nv^##dxRn1Lv!94>q&o!K09gK3DC3{btlUy0Hrx^6bE{lQkGE9z8jIJP zsEf(If6wz_*<{uuhaJfvI)wuhF&8$Oo3>|r-lx(_3(kL;aNi!vvhwI%88y)C9e&Ry z(`iiPa(#F>w_0m?%2jJ>tv$`i!)Puf#X~0G=O+ivr6s^iKoS#YrW~j1q#E${(^B>R zTSh+HaW3y)?@bcfyrbpHIav(HCl9IbUk64ovMBgV(ccXsbb%3RWz9?%QqKtpOt4Zh z1fR4UT$|3~&<)n*`Vs7arPI3Dj?Wy>EarJE-UIom=sy!_;N69btVO|#5#U3ldBbPU zT<6;6ooZLJRFAgn(^7lGbBPW0Ul(vDjU#ZsmAi!BmxC6)oA&a?8+=@hDXst5+pdJL zPRM@WEz2tB>DMU_?uqPw3r9tx+4P#$*y&ugG|(Sn`EstAh!$waNAjkhXN_z! zt^Mu)H9J*1GA1MNh&cVC-UT<|deE`N;&He)UH9>OVJIzVR~&cqL%W5@m^pFPapE_q zw&5JR1*;A9%I=hhvday|Cfe&kgko?#V}@Uk{La)HT$EC+^0#GnS8*C#;BHRB2|QpGn+VYiXn}EeOXU>HEzfi!bn5w&oE-rS zM55_4JqwIOtb!=+g%S@*ga+)X2C?PWRAzV_+Prcm%41bahCiZ3;6kyOQP;H?r9Hb% zo7$slR9)gzw^2CYb6b|^?^5;1_L|FDtMP@^9`3d~1LNB)9pwL*P)YUXy+b^jPRrR- z@@M*jklaxUF76WRcTaig5R-+XBnSBq@nI^;3<F7k66NRWjy*c5+-lw1hZ{BLB zC4`qkYb1*T*H1H}%0p?wrq&K8G+cj6z@b6#Gl-Ug?&K>D%W;`qYJkB->8oikF(=%n zJOfugW5u2ji~h*R_A6gYYCb;qj>KoHE?nJ>MqVZ^2-C4+F$tT!HI8xfL3{h$bd?Pj z?Npl{7~`fi)!lh&mBSU_e)}p!$Bjce9xdzToh{6Ay;KFWvkATdWq!1U+aux8vC(qB zOPORPJU4nTw7_|0w@g(>aKt68>)&Y_u8s=Ar8Dk0#QC`o3DgoU2OZmHJ2@DkHDkpU zlP>imZM4$x8l{d*h3>v96UWcTaLk~LC%j$HvdqTQw)`5`pWQI#&?7Sp15N-r}N>~ zWb;#<5tCP5bu{xCCgA)h+(k5zi`|#mjH^4%#q6}}-o@NKYx!zr*sZ;OLBi!Y<-m8j zuh^kF=gtEosiMRMNs}624h|(ROOTud)i>y8Q;4PvC7I}%a>`{fG_Z0_tU2qyMOZR;Tz~)>T#+Egx_s9z434(w89qMHYMG40Q>_}duDU@WU zdzSO(DaFx>R>4%aNbEpvF>#t&k^{QABB$uPT3xFCv=Wyt+D=OFen2z-78!8p>*MI^ zlIGpXZ$NIq2R7oQj8~N3jvGH}p~Ic4v~8HSO`khUkR1@*-5J91URHeU$aTIlV)4+f z^#UQSn5VwdZ`(UD&7;)M^3b1v87`s315-}|(`?Q4%*SmPdc3lGVauSi=wEODZLqhpp%8@;ul*)Nd~@)k@x$HQ zROxu}Q9-f-eF+RoR^@sz{<{@7SzPK)caGXyUe?Qf@>)6PlKU6IH&E}w_d>A0M-jKzI#g;ovuBmY|WPI|&TtItiD zaA5o_c?Bb6WMKBvgZBv025&F;sT40L2hh3CsF8ttf(i5+fl=SP*wyU}xscxOW9DPd z=iIwID#}94_rk5@QD6U9iM~$`BJ9LqlB}49h4edIW_R6SDc*Dd@_?q*B4Rl4Z`RLFDbL)8TOS{HT-_Q?zoKf^^Iq&0!3@k+f z<{gr&|I6jqb=$fhi5ANYXJNa3RE+Q7rWSr%ecIQK271ya6hHH=B=9)hbjXjqKJzZa zBMRG}^~RBD1TOUT+M!K`f^Ri2Y5|BcA}zLTU~E;UjDqgby`QETz~07E-~IcNY!RZs zi9<}QFCc4IC7Y-Bw^y!)QHMq`=lORDQnJm`c9`NC$~s4L>KJ}1N5)_d7FDKS=(N3R z>xH0tJUw_cF0>C#iT1h&H27Suq!Yu*qz{gzp-K8aOUAZud!|=s+TOm6iR)fV`I2?J zh4gY!@KRq&Xhsm;&+_!+YHG0C+XnB}oO9bCZkHVj>*x&9>5oy(+Zi{dGBtmDR;*FghhJPO2G5hcyT!l))aEG3<9+w1zwdSmLV^K^ku zmTO;~?sKhY4|ST~F=0a{e=|0Xy5frrEZ>FmY~749G!O8SDwOotb@j2n1Gol$Ud!|s z=tG~gI(E@%o;SUnHc;!r_ncleT>@IwAbt(wa~d}H3LhxRvdLgj^Ftw~(Jt_LlreFZb2hamK_u+7)b(p4g4Qhb#ebMxX=_;YYN*a>f(nU0qvUQQ6c++M1&CNJjYAXTGrN9(%Gpax}2-v^~@m!(Ob zKJ$h7h}iKeN_#Hg0~;_^Ir$gh`)ZAz9UlM>ms7APY@1co_6a&gYr>t%`&J}6S<+s2 z$Sb8NDEqu)M`h22vg-ax)0UNl!-S{udpWTaAHF!-SIlg9^a`psy!{h-2wHaT(fFLX zl*vL1R%Q-p7n>a^$1PJmtW$keAYqZUXvI+)u(L8KO+RWsny0}>(VYZ2|E{mEWyX=U z)ONdfp>Z<)*;fA{>AOd||KVPIEY+(w3t)DSjfnY`y-OJdKf>E2CTW@?4Y%gQ1>~L+ zKHzv8Y7hK02cgzS&5d&#UFcfwl2ba6RGJW{P{)j-7m)k1p*(fW{m%SDlIV3Wdlar~ zQ+l;Z;I53rmzQg)4^rO#eeUFZ!GF0)0a5@!Vd8Nf;7@KJ`1MadgB%|K_XXtS4RF=+ zCyf8=VUavwuJ3UO``07?6hN{(`hR7CW3d120zg1bj-~(9dH%W4_-haUEw{GFBf3%h?FIlj_5M)5dN189%C;gd&z4e|r#DM|(`YWqwA+?3S>tslMdunrQ= z$Oso*`?@jbyl$OXuTI>iiuNT-_|TAHLsRjST>19Q5z7X&AH%W$6LS1V*fkHg>`WuwN%nEt9b6%+un*7Ah9 zW>(pE?QScE&A*{Q$c?DAx4JCtv%ZvXOK(N}^?jbEm&W0K+4mXQrQI3x_5?xmN~>t< zBWJ>PS;K1WqzS|?)H1aCK5I0~!+_e;;L?nEqguxRyn$gZT65v)_}soc?Ex)($JboA zuQaP=1^9@e?6L>8w4tY33RmaKOe%JRVd2Pa<50}5ZB^MbdJu48F8tbr8g%|rfuEMd zoea#aSH%Hc34852%qeHdtOeZofw-aK#llx^@Gh59(iKs%Q=;u3ybEsU!VKvyEqG%Syk$W)8aea(@?nF^9*JpQPp;kF z$*v2-VdY7~ZeJZ^&xbuE;z^htoV-z4#T~|7HmJbGX#vR-svIXzoQw%i`b6^~oSNpm zd+7NySF5gRzEsjyc6O(`ne#G-gK&+H9;Qq`tNZ%JGQC{6$jsw=1qD*M@S2}-eW@Ow z^bTM21}69>wfZ!tH4WV)?hw1>L_cq?;t!jM0nOW`)#->uSOuZZtsB`Zd*GUDxD+pL z25o>RbX-gAwQip3GWt;N3W=XI^TBl`H&W|BPiRBWagXjNjrS@Sm32LrcB*w3HLCaD zS(!idWGGL*J=%>FPLp&oil5v!@iawz%CP>J@|*a6LKFBbIKcuKlvrx|%4ZCU&GSSF zU(kJ5X-z;gLk1UgJ0E|+UU;=5@`AjDYCWjq#u;m&Sn}EyI?#9vid-M%xJmyv8RHh{ z;ntfV{xf`qx%?n0)$$V4g9^}EW0L3*@>x7rysAkJ!-6}%?r717ah`61$h7(i7x2Qw zbc3$?62k=}I@L zFtMwD5{g8`PfmCzyd%`gH6~216r%>(X%`M|M`t;gcdyR+mJ;W@Z&mOkw!_0r5{Lqy zeOW!yw%rzX&WaTF;OE?pW#C%^O%={+F6g1GO_A`0pZ0B=5m&Ddh@ADrE$g%wL+eYn zen`cXH<&{=M|*7RNpsT`dz&fcH&JPrZmG1pKd^aQCo{J$jrOMmd~+Y?&moz6@5J%r zM_`FRv@blZQOLV!1ACHq-&S`}2+SWKUz{*JFCqF>?L_zUV)Jj%CxY2M!2+lxN^|tb zPrt|O8>JJwl;KS+_2c(Gxy#o#IjwdFp;XPAkoDlCy4)#iu1^_r>ors^I7esUw^DRH z`=6FSPWAMsd`x+kidn)xeOkR`Q|Mb$=S`&LQdBQrndlWF+~@`Q{cvxH815RXNX7P& z@Gk7D`@3f=s>%a7VPx!g)Lq&J_pduL_9M0>L1JJNYq_p#aX{Td{echq%uQtM^V?@@(AU zufy95n;BiU7vYM%y9q-QtHRA2n7z?ufEOS+0iFj4N97tmztuPkinvKmW2oaOQ-^{X zTFoV))=S8`XO=&)%L^5tDtaC3O;d7U>ZjO`h=*;uCrx zyWo7nd};;Lt6QpTpU>N(6W-evtCkigOd__eGT+u#Zso1{B#bzLer(Tq%kaW{aU#YL zMHk=FO_o7a=H?@`ui)kj_oVdUzSQw9j-ZTwQ*~$gq0s)~t3$N~w11ym_n~P-@FhT8CI$iahS?3#Wt{*1k^8 z2_E7`@N0R&hLfPnDJBUBh%Y4Z+ab;>iZ8WYpUQQ|1&ddD!Vi4Kb$FAmw#%cI7K3?J zvP}C`ZvIs|rUDR*qcru@%9aM9Y@9b!3^cPGL0@l?hZGjog;hpdm?P5LEs&=Rh+rSt zH3QpaYb+zPT3P=sM{i$`P6t+A5eCoFp9Mz=!j&@ZqtN|&GZ*vgABCxi2z0ZWOPI5K z-o4%;bDa&JtZ{|!uwz+E>Nn+8S|wQ<`XExh%ZuoWoD;iS3K)LJb;lJx?%Y>1kD4&7 zU%A~>k3rYiRb74_-&LD9;gvA?n8|Up_}ud!N48XI=;%5j=7RuW1%G*nZfU-UyUd6F zaf{z(mn9P1#|)R?(UM3*aIxIv4#WCw(cTu{OqDmRivlm{(a?Q9B3Wv@2}|&WF&s0NfWI$TCeEb@WT7hjs4M5_jayP8Lr&g(Zji+tlyL%-t!#p;b_xP zHK#CNj%pw9jheY_>x>^Tt<4;qn<|z)=?KoPZEBHL3F)ya>@}zjwfl(TF%7{UB3H+| z8P?K;7N%F9jA8NC87t{g*&?Wg8;OPBz(MQy)d6GvCbhDXwEh$~1P=Pk;)kxGpQovL zKbtMq=!08snTIdI5IT-Z;W9UbUi7pM|0D6zi*XLVz&PKck(4r6gEPi%oRU5yFw zb)$NZ*TV`FYCNv10nl^0Q0%MReVJ!=^6qX4w`EC7jk~)R5*XNW0#gz#2!4$ zRPY(SFz&lG4^=AZIpsl}vo*~9y&g?Z*g5nGh@X_Pgr7^X2OHwln=?BYR-1Q3dpw2) zWGIY@;?8(*s<4u~xvyE0-GZ+wzl);eF6maD9_vMSDTutyE&Wdw_Z*Lz>3I!(3 z&MD+X*lrlsZp{Y{&JB%93YtE~UWvk56~z9G`xSSvW7Rz;O1a{lJ_!wrK1`7Ixz*%r zu}rdK90FJ#rzd~Mpw@aJiGE@Kqrd$J>!|u(UxkW`jpO)g)i9JPSV?^2jv zz2WDh4qh;P0+`_IBfd~<>2~ZBXR;q13_U9~!V(zQLGL_G=)88}(rV|C4 zw!^C@yqga?i_*;`ik(H;d}NKXjt}-h-qx_kPR(WA{s9>y)mlBKq0Oz~ABGy2a{7Ip zQE@*J8BQ9VhJLCmcs(e#|F=o1Y%FoO{>VX|*R3gXN1bu_$_5dQdJ>|A|O zbT!*`RBn~exC{!uxsBpdSQwx(Gc7K;R4Ry~R1P*}ifM|Z=#(WXin)x6 zvY3eE1_}xy0?&c!eV;$z{qTNx`E)qv+}CyA*Zuol*YD<>!vWc>M4YCE*$}OpRpF^N zIO`6MY`_1^93r2y{v>>hi%+Oo9KIwP76ZjqgR@dtvKfc-HZJ18rp0NLvp6!NqNbK( z0#lVUCqpo8&jZtj=p)pl$K2;!N#|?Z#}|g8dH6Rn%4^4RU6ewU^3qA;aSw_hq+qUM50rDsV2tl2EWr~6QV#EG36BwNZx%y%OaTWs zFCQJAl7fTNE{nJa&e(1^Bd)WcZT4$f?tWWh5zFYC)eCBD($8@)HY?DgUR%dE02|fI zdX-VP{AKSL_RCf-^T{yf&qUWl0LQa{Lz^sUXT-ngXZ+>1xBe^t*^SitCscAe(h~@- zC(tFs@3m1LHB(M+&lJ4YTGcrw19cu~uS3WIt)BzHAt0jxNB_gIt_T0)M&}O|kgaR= zVRw!$55hKqbT)LE9N1O8oCBB##`n?9$8PG{e{^;4qfgzbz`Xvaxev{Cz01uXQ1XVs zeZ9TZar|qxeDMa z8Ros`@I?r9snb4k;CG2aVQ4{vy)k6Ex94)=t0gLijnrgkD40LYMdNO4GXO@Fn>(Q7 zL)BGQ&F>}k9au2dr@*CleRT|`>NivzY?ypp-HkjPi_PXEte`Z7XulL`x|QUpUV}j` z`4nDT*wr4p-js#o=JnH^HK$#~VJ6{C33(YYIwgH7>b1M-xz%%7C;Y9OvN&$1SrIbR z6oO@z1w+E0y@~ohY6I9yRPI9Qaaw*`&r>37yp0#{!|91~tf^`;Z@)ZL>x+w;tC1{T z)5nHp8lQKoo2!i$A-DF-Hqu(a`4E z;N+%IeDmNc{N){QoR9751>{6oz;?x5m%V3_fpw?N7{BVO$3U|>Sp zP>f0Vi`Ks4f?mRpZp|Y~h8{REd{{H+Zr#!!r<8l z$=&zNlr_R_r3ovimb#ROE%)fL)8+Mp!|iB|sCl6&T9Yob#HjD^yKfL%n%NmbmEfrm zV!VSm{=$ML{t0vKigTBULC#pIj;S8@3xXVVu7MlqUt?_`is!;3GX=K+|4Xs`bc zog(dmq6bdA@dR?7i(AgkXaE0KGR$kgRyZZv<8DY}DY3#;7Y@=zn|}(WU&SrJh9Hb^SZ#BSCtjrnUupJazPbX!&h9 z2aPt*QqDJ_@pcQpR1H<2J6r1~7*LShb@68;{59jCy1@w`c8fgUn!G-57;S-8t&Ege zNBH2ZK-+AnzZ1}7ae`O)!;Fn+F{dcID96u{T?aBk21MVw#DyZs(IW+|Vu^{bT^D+w z?RC8wz2@n7LZF%WsW<-0+Y^3|XsvR&h`P`uQN>n($TZp5ZFPdRMs!%PIZ*$smMQ)C zUAf9O^;POZz7oY)x*|x4WhTpRxvJ|9GBRalVY2c%aNt=kZK<=@l;-Q4f+G2THde^= z{l-4@jT((VHq;e+H_#5m{2`U$2`M9>s@fn>)zHJzk>qz>=8ohzN!Mom1c>k;is22B zb5Pq(aldq;U*;Nu6PrS%ZunMuMX#YHQqyyMWm%#~apSd;MPZUWi6c*)gj`b)73}Tj zXL_&8y99kj??icyTnk&;>IH=;vY?oB%MdqiU}J?Nq$8a8uXZxBy^Z^KO>yXXmXX1U zNJffGl;;r7CA0SZL(EG!%~U#hcO@E5KmU=M!NP^?KD>!u>>LAUtAsnHGD8LP0mO66V>5iecX(B7rX$ITQDZJ{LI-9cM&qkv zwnnzNn&Y#gPTq}jLYRS$Hu{c4oecE3ayQ$*eEC`6Ed=GO7)5Piqxx?8%drA;#=v-i zOP7H{mJ&$ue-=m_`Q44jI^Pt(X)vmgtLcLkj{H1Zfj&xRJ<;FCZq0YP{Zr7^sTJCE z&gX(PSaN)jzUyLddm?r(MsowRL^U!a$?Ga(D6DYs~PrqHZ79l;`jm`R;-)$;mDY|nX2z?sZw>7M=WEa5ts4EF}T>$ zrui8tT-#_!9G z>IxfC{)KK&P3vnCUv+KFWv)&GNs3e9Ea;iWS=SMV^VT7^(WhMma8- zl4lILiWQQV=!=(&xrOfOF;vuxl^gD&i7>KyT_}jPZ9N;b&fyh5G|gzX!o0s<6~ejF zv0cFA!b{kzuWi+}XZ!GhHtL?(QUa>SPB4W(Ty~+n$8G9%)e}D+j7%9!xGz$z%W)_6 zQ5?pfC{?r8L_UQh+gI=q+h17~fKgr|!iUcJ*(FxsxWb2^hr)_+*JR*^qt%wXKw*ql z)JOZB>y@rcanPjhcx<~g(}~}M6s$9V%C8k8Z{Aqbq&BVf1mLn^1IFk^zLWYoe8JjB z7iEvADJ<91$K;UG^lBE%J@+IZfr2VJCA-hqYITu4+$Wj2LR&H`!}8W;l)W2r4``ML ziP*#@PDWj))rKO-j&rCHPV<$;|MD&#H{?}*{-*_eDLU9exor8td6q2=7oO_lG+k*P zxAD6iU-iT@xN>uWPU8Vxv!yx3%Wp<@7HL!%?$BouyHjGDGk;8_{KYJTh7VKEgfi?EFNJPfD;4TH1mJU+u&8FG+hVk?xlf1z&0ZOn|d1!P?NODP?8~lY7ejE89%r0R(_EbgOf(S z0Zy6!+_1RP9VI!t=i_kpwO+CW|JKBgFOys|bt8lR+_Ly4wZdXNp(R~gFFq;EE+`iP zJ$za%#3&r|Hr{-SNqc7=&G&P#mS@c2?;nZTs2%-)%PN0(kJR>%(hnb`7GqfLhBqrU zz@0(%8N#i-cUYODC7x)F8^@M~Gxu(iX0P z1%EI#Qd0tR%gwuVVi?2$BR3G#&n4~Ai!}HkxPM4xchBU)O?YKVR2nPwYa`d>Hbo3| z{xPi7wo(+fwtDfu<2%M5z82sL*3Lq`^3`d<{Y=w-*NCs#h>=PAq=)k2Yx*vaU1jWB z9dSLIK8)yUF8CJK^*f6Z#Ay(j9L(Bjd0_1d>XbZh%Vh1SiXwS+#8zlqGJ34zR(saY-E9jeW}-hYG|`I3)E z5HPs_^DbtIy7BQKlo4 z@89#l0DXa9tpTW8YPTXJ7TQyR1)6pr-~w3qX#xHK_-40FOF*sl|IOBQUbMOJZ`Xy7 zPlS0ymB-LlhLv*nDE8ilrA`e)YJOnOxw_K?xU}>CpZ~)Vc)p6+cG6IPV_TH&AE-`y L`g_!#jQH)}zX&B< literal 0 HcmV?d00001 diff --git a/docs/source/images/telemetry_use_case.png b/docs/source/images/telemetry_use_case.png new file mode 100644 index 0000000000000000000000000000000000000000..c1dfc2e9ef15566ae0adf47eeeabdf5d85f9fc92 GIT binary patch literal 35616 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 Kjj~&oul^syG%Sb! literal 0 HcmV?d00001 diff --git a/docs/source/index.rst b/docs/source/index.rst new file mode 100644 index 0000000..fbff748 --- /dev/null +++ b/docs/source/index.rst @@ -0,0 +1,23 @@ +.. Picasso documentation master file, created by + sphinx-quickstart on Thu Nov 24 13:24:43 2016. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +Welcome to Picasso documentation! +======================================== + +Contents: + +.. toctree:: + :maxdepth: 2 + + deployment_guide.rst + functions.rst + + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` diff --git a/tox.ini b/tox.ini index 80c46e1..5c1f228 100644 --- a/tox.ini +++ b/tox.ini @@ -1,4 +1,4 @@ -# Project LaOS +# Picasso [tox] envlist = py35-functional,py35-functional-regression,py35-integration,py35-integration-regression,pep8,docker-build,bandit @@ -57,4 +57,4 @@ commands = bandit -r picasso/ [flake8] ignore = H202,H304,H404,H405,H501 show-source = True -exclude=.venv,.git,.tox,dist,doc,*lib/python*,*egg,build,migrations +exclude=.venv,.git,.tox,dist,doc,*lib/python*,*egg,build,migrations,docs