From: Zack Cerza Date: Tue, 2 Dec 2014 16:03:53 +0000 (-0700) Subject: Reorganize documentation and Sphinx files X-Git-Tag: 1.1.0~1061^2~24^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F369%2Fhead;p=teuthology.git Reorganize documentation and Sphinx files This should allow a more consistent experience between reading Sphinx-generated HTML docs and just using GitHub's renderer. Signed-off-by: Zack Cerza --- diff --git a/ChangeLog.rst b/ChangeLog.rst deleted file mode 100644 index 218a0baa2..000000000 --- a/ChangeLog.rst +++ /dev/null @@ -1,6 +0,0 @@ -Changelog -========= - -0.1.0 ------ -* (Actual changelog coming soon) diff --git a/INSTALL.rst b/INSTALL.rst deleted file mode 100644 index 100372795..000000000 --- a/INSTALL.rst +++ /dev/null @@ -1,54 +0,0 @@ -Installation and setup -====================== - -Ubuntu & Fedora ---------------- - -A bootstrap script is provided that will do everything for you assuming -you have ``sudo``:: - - ./bootstrap - -MacOS X -------- - -The ``bootstrap`` script was recently updated to support MacOS X using `homebrew `_:: - - ./bootstrap - -**Note**: Certain features might not work properly on MacOS X. Patches are -encouraged, but it has never been a goal of ours to run a full ``teuthology`` -setup on a Mac. - -Other operating systems ------------------------ - -Patches are welcomed to add ``bootstrap`` support for other operating systems. Until then, manual installs are possible - -First install the non-PyPI dependencies:: - - python-dev python-pip python-virtualenv libevent-dev python-libvirt - -Next, clone its `git repository `__, -create a `virtualenv `__, and -install dependencies:: - - git clone https://github.com/ceph/teuthology/ - cd teuthology - virtualenv ./virtualenv - source virtualenv/bin/activate - pip install --upgrade pip - pip install -r requirements.txt - python setup.py develop - - -Teuthology in PyPI ------------------- - -However if you prefer, you may install ``teuthology`` from `PyPI `__:: - - pip install teuthology - - -**Note**: The version in PyPI can be (*far*) behind the development version. - diff --git a/LAB_SETUP.rst b/LAB_SETUP.rst deleted file mode 100644 index 564fab623..000000000 --- a/LAB_SETUP.rst +++ /dev/null @@ -1,140 +0,0 @@ -========================== -Teuthology Lab Setup Notes -========================== - -Introduction -============ - -We recently set up a new lab for Ceph testing and decided to document the parts of the process that are most relevant to teuthology. This is the result. - -We started by setting aside two of the test machines: one as the 'teuthology node', and another as the 'paddles/pulpito node'. These would be used to orchestrate automated testing and to store and serve the results on our intranet. - -paddles/pulpito node -==================== - -We're currently running both paddles and pulpito on the same node. We have a proxy server up front listening on port 80 that forwards to the proper service based on which hostname is used. Feel free to modify our `paddles `_ and `pulpito `_ configurations for your use. - -Do the following as root or as another user with sudo access:: - - sudo apt-get install git python-dev python-virtualenv postgresql postgresql-contrib postgresql-server-dev-all supervisor - sudo -u postgres createuser paddles -P - sudo -u postgres createdb paddles - -Create a separate user for paddles and puplito. We used 'paddles' and 'pulpito'. - - -paddles -------- -Follow instructions at https://github.com/ceph/paddles/blob/master/README.rst - - -pulpito -------- -Follow instructions at https://github.com/ceph/pulpito/blob/master/README.rst - - -Starting up ------------ - -Back as the 'root or sudo' user:: - - sudo cp ~paddles/paddles/supervisord_paddles.conf /etc/supervisor/conf.d/paddles.conf - sudo supervisorctl reread && sudo supervisorctl update paddles && sudo supervisorctl start paddles - sudo cp ~pulpito/pulpito/supervisord_pulpito.conf /etc/supervisor/conf.d/pulpito.conf - sudo supervisorctl reread && sudo supervisorctl update pulpito && sudo supervisorctl start pulpito - - -Test Nodes -========== - -Each node needs to have a user named 'ubuntu' with passwordless sudo access. - -It's also necessary to generate an ssh key pair that will be used to provide -passwordless authentication to all the test nodes, and put the public key in -``~/.ssh/authorized_keys`` on all the test nodes. - - -Teuthology Node -=============== - -Create an ``/etc/teuthology.yaml`` that looks like:: - - lab_domain: example.com - lock_server: http://pulpito.example.com:8080 - results_server: http://pulpito.example.com:8080 - queue_host: localhost - queue_port: 11300 - results_email: you@example.com - archive_base: /home/teuthworker/archive - -Do the following as root or as another user with sudo access: - -Create two additional users: one that simply submits jobs to the queue, and -another that picks them up from the queue and executes them. We use -'teuthology' and 'teuthworker', respectively. - -Give both users passwordless sudo access. - -Copy the ssh key pair that you created to access the test nodes into each of -these users' ``~/.ssh`` directory. - -Install these packages:: - - sudo apt-get -y install git python-dev python-pip python-virtualenv libevent-dev python-libvirt beanstalkd - -Now, set up the two users you just created: - - -Scheduler ---------- -As 'teuthology', do the following:: - - mkdir ~/src - git clone https://github.com/ceph/teuthology.git src/teuthology_master - pushd src/teuthology_master/ - ./bootstrap - popd - - -Worker ------- -As 'teuthworker', do the following:: - - mkdir ~/src - git clone https://github.com/ceph/teuthology.git src/teuthology_master - pushd src/teuthology_master/ - ./bootstrap - popd - mkdir ~/bin - wget -O ~/bin/worker_start https://raw.githubusercontent.com/ceph/teuthology/docs/docs/reference/worker_start.sh - echo 'PATH="$HOME/src/teuthology_master/virtualenv/bin:$PATH"' >> ~/.profile - source ~/.profile - mkdir -p ~/archive/worker_logs - worker_start magna 1 - - -Submitting Nodes -================ - -First:: - - wget https://raw.githubusercontent.com/ceph/teuthology/docs/docs/reference/create_nodes.py - -Edit ``create_nodes.py`` to generate the hostnames of the machines you want to submit to paddles. - -Now to do the work:: - - python create_nodes.py - teuthology-lock --owner initial@setup --list-targets > /tmp/targets - teuthology --owner initial@setup /tmp/targets - teuthology-lock --owner initial@setup --unlock -t /tmp/targets - - -Serving Test Logs -================= - -pulpito tries to provide links to test logs. Out-of-the-box, those links will be broken, but are easy to fix. - -First, install your favorite web server on the teuthology node. If you use nginx, you may use `our configuration `_ as a template. - -Once you've got log files being served, edit paddles' ``config.py`` and update the ``job_log_href_templ`` value. Restart paddles when you're done. diff --git a/docs/ChangeLog.rst b/docs/ChangeLog.rst new file mode 100644 index 000000000..218a0baa2 --- /dev/null +++ b/docs/ChangeLog.rst @@ -0,0 +1,6 @@ +Changelog +========= + +0.1.0 +----- +* (Actual changelog coming soon) diff --git a/docs/INSTALL.rst b/docs/INSTALL.rst new file mode 100644 index 000000000..100372795 --- /dev/null +++ b/docs/INSTALL.rst @@ -0,0 +1,54 @@ +Installation and setup +====================== + +Ubuntu & Fedora +--------------- + +A bootstrap script is provided that will do everything for you assuming +you have ``sudo``:: + + ./bootstrap + +MacOS X +------- + +The ``bootstrap`` script was recently updated to support MacOS X using `homebrew `_:: + + ./bootstrap + +**Note**: Certain features might not work properly on MacOS X. Patches are +encouraged, but it has never been a goal of ours to run a full ``teuthology`` +setup on a Mac. + +Other operating systems +----------------------- + +Patches are welcomed to add ``bootstrap`` support for other operating systems. Until then, manual installs are possible + +First install the non-PyPI dependencies:: + + python-dev python-pip python-virtualenv libevent-dev python-libvirt + +Next, clone its `git repository `__, +create a `virtualenv `__, and +install dependencies:: + + git clone https://github.com/ceph/teuthology/ + cd teuthology + virtualenv ./virtualenv + source virtualenv/bin/activate + pip install --upgrade pip + pip install -r requirements.txt + python setup.py develop + + +Teuthology in PyPI +------------------ + +However if you prefer, you may install ``teuthology`` from `PyPI `__:: + + pip install teuthology + + +**Note**: The version in PyPI can be (*far*) behind the development version. + diff --git a/docs/LAB_SETUP.rst b/docs/LAB_SETUP.rst new file mode 100644 index 000000000..7917d279a --- /dev/null +++ b/docs/LAB_SETUP.rst @@ -0,0 +1,140 @@ +========================== +Teuthology Lab Setup Notes +========================== + +Introduction +============ + +We recently set up a new lab for Ceph testing and decided to document the parts of the process that are most relevant to teuthology. This is the result. + +We started by setting aside two of the test machines: one as the 'teuthology node', and another as the 'paddles/pulpito node'. These would be used to orchestrate automated testing and to store and serve the results on our intranet. + +paddles/pulpito node +==================== + +We're currently running both paddles and pulpito on the same node. We have a proxy server up front listening on port 80 that forwards to the proper service based on which hostname is used. Feel free to modify our `paddles <_static/nginx_paddles>`_ and `pulpito <_static/nginx_pulpito>`_ configurations for your use. + +Do the following as root or as another user with sudo access:: + + sudo apt-get install git python-dev python-virtualenv postgresql postgresql-contrib postgresql-server-dev-all supervisor + sudo -u postgres createuser paddles -P + sudo -u postgres createdb paddles + +Create a separate user for paddles and puplito. We used 'paddles' and 'pulpito'. + + +paddles +------- +Follow instructions at https://github.com/ceph/paddles/blob/master/README.rst + + +pulpito +------- +Follow instructions at https://github.com/ceph/pulpito/blob/master/README.rst + + +Starting up +----------- + +Back as the 'root or sudo' user:: + + sudo cp ~paddles/paddles/supervisord_paddles.conf /etc/supervisor/conf.d/paddles.conf + sudo supervisorctl reread && sudo supervisorctl update paddles && sudo supervisorctl start paddles + sudo cp ~pulpito/pulpito/supervisord_pulpito.conf /etc/supervisor/conf.d/pulpito.conf + sudo supervisorctl reread && sudo supervisorctl update pulpito && sudo supervisorctl start pulpito + + +Test Nodes +========== + +Each node needs to have a user named 'ubuntu' with passwordless sudo access. + +It's also necessary to generate an ssh key pair that will be used to provide +passwordless authentication to all the test nodes, and put the public key in +``~/.ssh/authorized_keys`` on all the test nodes. + + +Teuthology Node +=============== + +Create an ``/etc/teuthology.yaml`` that looks like:: + + lab_domain: example.com + lock_server: http://pulpito.example.com:8080 + results_server: http://pulpito.example.com:8080 + queue_host: localhost + queue_port: 11300 + results_email: you@example.com + archive_base: /home/teuthworker/archive + +Do the following as root or as another user with sudo access: + +Create two additional users: one that simply submits jobs to the queue, and +another that picks them up from the queue and executes them. We use +'teuthology' and 'teuthworker', respectively. + +Give both users passwordless sudo access. + +Copy the ssh key pair that you created to access the test nodes into each of +these users' ``~/.ssh`` directory. + +Install these packages:: + + sudo apt-get -y install git python-dev python-pip python-virtualenv libevent-dev python-libvirt beanstalkd + +Now, set up the two users you just created: + + +Scheduler +--------- +As 'teuthology', do the following:: + + mkdir ~/src + git clone https://github.com/ceph/teuthology.git src/teuthology_master + pushd src/teuthology_master/ + ./bootstrap + popd + + +Worker +------ +As 'teuthworker', do the following:: + + mkdir ~/src + git clone https://github.com/ceph/teuthology.git src/teuthology_master + pushd src/teuthology_master/ + ./bootstrap + popd + mkdir ~/bin + wget -O ~/bin/worker_start https://raw.githubusercontent.com/ceph/teuthology/docs/docs/reference/worker_start.sh + echo 'PATH="$HOME/src/teuthology_master/virtualenv/bin:$PATH"' >> ~/.profile + source ~/.profile + mkdir -p ~/archive/worker_logs + worker_start magna 1 + + +Submitting Nodes +================ + +First:: + + wget https://raw.githubusercontent.com/ceph/teuthology/docs/docs/reference/create_nodes.py + +Edit ``create_nodes.py`` to generate the hostnames of the machines you want to submit to paddles. + +Now to do the work:: + + python create_nodes.py + teuthology-lock --owner initial@setup --list-targets > /tmp/targets + teuthology --owner initial@setup /tmp/targets + teuthology-lock --owner initial@setup --unlock -t /tmp/targets + + +Serving Test Logs +================= + +pulpito tries to provide links to test logs. Out-of-the-box, those links will be broken, but are easy to fix. + +First, install your favorite web server on the teuthology node. If you use nginx, you may use `our configuration <_static/nginx_test_logs>`_ as a template. + +Once you've got log files being served, edit paddles' ``config.py`` and update the ``job_log_href_templ`` value. Restart paddles when you're done. diff --git a/docs/Makefile b/docs/Makefile index 7899567f1..9e3a72f22 100644 --- a/docs/Makefile +++ b/docs/Makefile @@ -5,7 +5,7 @@ SPHINXOPTS = SPHINXBUILD = sphinx-build PAPER = -SOURCEDIR = source +SOURCEDIR = . BUILDDIR = build # User-friendly check for sphinx-build diff --git a/docs/_static/create_nodes.py b/docs/_static/create_nodes.py new file mode 100644 index 000000000..3e23ff281 --- /dev/null +++ b/docs/_static/create_nodes.py @@ -0,0 +1,60 @@ +#!/usr/bin/env python +# A sample script that can be used while setting up a new teuthology lab +# This script will connect to the machines in your lab, and populate a +# paddles instance with their information. +# +# You WILL need to modify it. + +import logging +import sys +from teuthology.orchestra.remote import Remote +from teuthology.lock import update_inventory +paddles_url = 'http://pulpito.example.com:8080/nodes/' + +machine_type = 'magna' +lab_domain = 'example.com' +user = 'ubuntu' +# We are populating 'magna003' -> 'magna122' +machine_index_range = range(3, 123) + +log = logging.getLogger(sys.argv[0]) +logging.getLogger("requests.packages.urllib3.connectionpool").setLevel( + logging.WARNING) + + +def get_shortname(machine_type, index): + """ + Given a number, return a hostname. Example: + get_shortname('magna', 3) = 'magna003' + + Modify to suit your needs. + """ + return machine_type + str(index).rjust(3, '0') + + +def get_info(user, fqdn): + remote = Remote('@'.join((user, fqdn))) + return remote.inventory_info + +def main(): + shortnames = [get_shortname(machine_type, i) for i in range(3, 123)] + fqdns = ['.'.join((name, lab_domain)) for name in shortnames] + for fqdn in fqdns: + log.info("Creating %s", fqdn) + try: + info = get_info(user, fqdn) + except Exception: + info = dict( + name=fqdn, + up=False, + ) + info.update(dict( + locked=True, + locked_by='initial@setup', + machine_type=machine_type, + description="Initial node creation", + )) + update_inventory(info) + +if __name__ == '__main__': + main() diff --git a/docs/_static/nginx_paddles b/docs/_static/nginx_paddles new file mode 100644 index 000000000..c1e0896f2 --- /dev/null +++ b/docs/_static/nginx_paddles @@ -0,0 +1,11 @@ +server { + server_name paddles.example.com; + proxy_send_timeout 600; + proxy_connect_timeout 240; + location / { + proxy_pass http://paddles.example.com:8080/; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + } + +} diff --git a/docs/_static/nginx_pulpito b/docs/_static/nginx_pulpito new file mode 100644 index 000000000..de9147ca8 --- /dev/null +++ b/docs/_static/nginx_pulpito @@ -0,0 +1,11 @@ +server { + server_name pulpito.example.com; + proxy_send_timeout 600; + proxy_connect_timeout 240; + location / { + proxy_pass http://pulpito.example.com:8081/; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + } + +} diff --git a/docs/_static/nginx_test_logs b/docs/_static/nginx_test_logs new file mode 100644 index 000000000..139a0a197 --- /dev/null +++ b/docs/_static/nginx_test_logs @@ -0,0 +1,7 @@ +server { + allow all; + autoindex on; + server_name test_logs.example.com; + root /home/teuthworker/archive; + default_type text/plain; +} diff --git a/docs/_static/worker_start.sh b/docs/_static/worker_start.sh new file mode 100644 index 000000000..500f2cbab --- /dev/null +++ b/docs/_static/worker_start.sh @@ -0,0 +1,40 @@ +#!/bin/bash + +# A simple script used by Red Hat to start teuthology-worker processes. + +ARCHIVE=$HOME/archive +WORKER_LOGS=$ARCHIVE/worker_logs + +function start_workers_for_tube { + echo "Starting $2 workers for $1" + for i in `seq 1 $2` + do + teuthology-worker -v --archive-dir $ARCHIVE --tube $1 --log-dir $WORKER_LOGS & + done +} + +function start_all { + start_workers_for_tube plana 50 + start_workers_for_tube mira 50 + start_workers_for_tube vps 80 + start_workers_for_tube burnupi 10 + start_workers_for_tube tala 5 + start_workers_for_tube saya 10 + start_workers_for_tube multi 100 +} + +function main { + echo "$@" + if [[ -z "$@" ]] + then + start_all + elif [ ! -z "$2" ] && [ "$2" -gt "0" ] + then + start_workers_for_tube $1 $2 + else + echo "usage: $0 [tube_name number_of_workers]" >&2 + exit 1 + fi +} + +main $@ diff --git a/docs/_themes/ceph/static/font/ApexSans-Book.eot b/docs/_themes/ceph/static/font/ApexSans-Book.eot new file mode 100644 index 000000000..332c8cbe3 Binary files /dev/null and b/docs/_themes/ceph/static/font/ApexSans-Book.eot differ diff --git a/docs/_themes/ceph/static/font/ApexSans-Book.svg b/docs/_themes/ceph/static/font/ApexSans-Book.svg new file mode 100644 index 000000000..8af9af2bb --- /dev/null +++ b/docs/_themes/ceph/static/font/ApexSans-Book.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/_themes/ceph/static/font/ApexSans-Book.ttf b/docs/_themes/ceph/static/font/ApexSans-Book.ttf new file mode 100644 index 000000000..42a008463 Binary files /dev/null and b/docs/_themes/ceph/static/font/ApexSans-Book.ttf differ diff --git a/docs/_themes/ceph/static/font/ApexSans-Book.woff b/docs/_themes/ceph/static/font/ApexSans-Book.woff new file mode 100644 index 000000000..681a70ee9 Binary files /dev/null and b/docs/_themes/ceph/static/font/ApexSans-Book.woff differ diff --git a/docs/_themes/ceph/static/font/ApexSans-Medium.eot b/docs/_themes/ceph/static/font/ApexSans-Medium.eot new file mode 100644 index 000000000..e06fd2154 Binary files /dev/null and b/docs/_themes/ceph/static/font/ApexSans-Medium.eot differ diff --git a/docs/_themes/ceph/static/font/ApexSans-Medium.svg b/docs/_themes/ceph/static/font/ApexSans-Medium.svg new file mode 100644 index 000000000..6c624ec97 --- /dev/null +++ b/docs/_themes/ceph/static/font/ApexSans-Medium.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/_themes/ceph/static/font/ApexSans-Medium.ttf b/docs/_themes/ceph/static/font/ApexSans-Medium.ttf new file mode 100644 index 000000000..44c281e33 Binary files /dev/null and b/docs/_themes/ceph/static/font/ApexSans-Medium.ttf differ diff --git a/docs/_themes/ceph/static/font/ApexSans-Medium.woff b/docs/_themes/ceph/static/font/ApexSans-Medium.woff new file mode 100644 index 000000000..b7c88194b Binary files /dev/null and b/docs/_themes/ceph/static/font/ApexSans-Medium.woff differ diff --git a/docs/_themes/ceph/static/nature.css_t b/docs/_themes/ceph/static/nature.css_t new file mode 100644 index 000000000..394a6339f --- /dev/null +++ b/docs/_themes/ceph/static/nature.css_t @@ -0,0 +1,325 @@ +/* + * 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 ----------------------------------------------------------- */ + +@font-face { + font-family: 'ApexSansMedium'; + src: url('font/ApexSans-Medium.eot'); + src: url('font/ApexSans-Medium.eot?#iefix') format('embedded-opentype'), + url('font/ApexSans-Medium.woff') format('woff'), + url('font/ApexSans-Medium.ttf') format('truetype'), + url('font/ApexSans-Medium.svg#FontAwesome') format('svg'); + font-weight: normal; + font-style: normal; +} + +@font-face { + font-family: 'ApexSansBook'; + src: url('font/ApexSans-Book.eot'); + src: url('font/ApexSans-Book.eot?#iefix') format('embedded-opentype'), + url('font/ApexSans-Book.woff') format('woff'), + url('font/ApexSans-Book.ttf') format('truetype'), + url('font/ApexSans-Book.svg#FontAwesome') format('svg'); + font-weight: normal; + font-style: normal; +} + +body { + font: 14px/1.4 Helvetica, Arial, sans-serif; + background-color: #E6E8E8; + color: #37424A; + margin: 0; + padding: 0; + border-top: 5px solid #F05C56; +} + +div.documentwrapper { + float: left; + width: 100%; +} + +div.bodywrapper { + margin: 0 0 0 330px; +} + +hr { + border: 1px solid #B1B4B6; +} + +div.document { + background-color: #ffffff; +} + +div.body { + background-color: #ffffff; + color: #3E4349; + padding: 0 30px 30px 30px; +} + +div.footer { + color: #222B31; + width: 100%; + padding: 13px 0; + text-align: center; + font-size: 75%; +} + +div.footer a { + color: #444; + text-decoration: underline; +} + +div.related { + background-color: #80D2DC; + line-height: 32px; + color: #37424A; + // text-shadow: 0px 1px 0 #444; + font-size: 100%; + border-top: #9C4850 5px solid; +} + +div.related a { + color: #37424A; + text-decoration: none; +} + +div.related a:hover { + color: #fff; + // text-decoration: underline; +} + +div.sphinxsidebar { + // font-size: 100%; + line-height: 1.5em; + width: 330px; +} + +div.sphinxsidebarwrapper{ + padding: 20px 0; + background-color: #efefef; +} + +div.sphinxsidebar h3, +div.sphinxsidebar h4 { + font-family: ApexSansMedium; + color: #e6e8e8; + font-size: 1.2em; + font-weight: normal; + margin: 0; + padding: 5px 10px; + background-color: #5e6a71; + // text-shadow: 1px 1px 0 white; + text-transform: uppercase; +} + +div.sphinxsidebar h4{ + font-size: 1.1em; +} + +div.sphinxsidebar h3 a { + color: #e6e8e8; +} + + +div.sphinxsidebar p { + color: #888; + padding: 5px 20px; +} + +div.sphinxsidebar p.topless { +} + +div.sphinxsidebar ul { + margin: 10px 5px 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: #F05C56; + text-decoration: none; +} + +a:hover { + color: #F05C56; + text-decoration: underline; +} + +div.body h1, +div.body h2, +div.body h3, +div.body h4, +div.body h5, +div.body h6 { + // font-family: ApexSansMedium; + // background-color: #80D2DC; + // font-weight: normal; + // color: #37424a; + margin: 30px 0px 10px 0px; + padding: 5px 0 5px 0px; + // text-shadow: 0px 1px 0 white; + text-transform: uppercase; +} + +div.body h1 { font: 20px/2.0 ApexSansBook; color: #37424A; border-top: 20px solid white; margin-top: 0; } +div.body h2 { font: 18px/1.8 ApexSansMedium; background-color: #5E6A71; color: #E6E8E8; padding: 5px 10px; } +div.body h3 { font: 16px/1.6 ApexSansMedium; color: #37424A; } +div.body h4 { font: 14px/1.4 Helvetica, Arial, sans-serif; color: #37424A; } +div.body h5 { font: 12px/1.2 Helvetica, Arial, sans-serif; color: #37424A; } +div.body h6 { font-size: 100%; color: #37424A; } + +// div.body h2 { font-size: 150%; background-color: #E6E8E8; color: #37424A; } +// div.body h3 { font-size: 120%; background-color: #E6E8E8; color: #37424A; } +// div.body h4 { font-size: 110%; background-color: #E6E8E8; color: #37424A; } +// div.body h5 { font-size: 100%; background-color: #E6E8E8; color: #37424A; } +// div.body h6 { font-size: 100%; background-color: #E6E8E8; color: #37424A; } + +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: #e6e8e8; + border: 1px solid #ccc; +} + +div.seealso { + background-color: #ffc; + border: 1px solid #ff6; +} + +div.topic { + background-color: #efefef; +} + +div.warning { + background-color: #F05C56; + border: 1px solid #9C4850; + color: #fff; +} + +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 #5e6a71; + font-size: 1.1em; + margin: 1.5em; + -webkit-box-shadow: 1px 1px 1px #e6e8e8; + -moz-box-shadow: 1px 1px 1px #e6e8e8; +} + +tt { + background-color: #ecf0f3; + color: #222; + /* padding: 1px 2px; */ + font-size: 15px; + 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; +} + +table.docutils { + margin: 1.5em; +} + +div.sidebar { + border: 1px solid #5E6A71; + background-color: #E6E8E8; +} + +div.admonition.tip { + background-color: #80D2DC; + border: 1px solid #55AEBA; +} + +div.admonition.important { + background-color: #F05C56; + border: 1px solid #9C4850; + color: #fff; +} + +div.tip tt.literal { + background-color: #55aeba; + color: #fff; +} + +div.important tt.literal { + background-color: #9C4850; + color: #fff; +} + +h2 .literal { + color: #fff; + background-color: #37424a; +} + +dl.glossary dt { + font-size: 1.0em; + padding-top:20px; + +} \ No newline at end of file diff --git a/docs/_themes/ceph/theme.conf b/docs/_themes/ceph/theme.conf new file mode 100644 index 000000000..1cc400446 --- /dev/null +++ b/docs/_themes/ceph/theme.conf @@ -0,0 +1,4 @@ +[theme] +inherit = basic +stylesheet = nature.css +pygments_style = tango diff --git a/docs/conf.py b/docs/conf.py new file mode 100644 index 000000000..1dc067577 --- /dev/null +++ b/docs/conf.py @@ -0,0 +1,260 @@ +# -*- coding: utf-8 -*- +# +# teuthology documentation build configuration file, created by +# sphinx-quickstart on Thu Aug 7 12:30:36 2014. +# +# 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.autodoc', +] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# The suffix of source filenames. +source_suffix = '.rst' + +# The encoding of source files. +#source_encoding = 'utf-8-sig' + +# The master toctree document. +master_doc = 'contents' + +# General information about the project. +project = u'teuthology' +copyright = u'2014, Inktank Storage, Inc.' + +# 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.1.0' +# The full version, including alpha/beta/rc tags. +release = '0.1.0' + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +#language = None + +# There are two options for replacing |today|: either, you set today to some +# non-false value, then it is used: +#today = '' +# Else, today_fmt is used as the format for a strftime call. +#today_fmt = '%B %d, %Y' + +# 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 + + +# -- 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 = 'ceph' + +# 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 = ['_themes'] + +# 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 (within the static path) to use as favicon of the +# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 +# pixels large. +#html_favicon = None + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['_static'] + +# 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 + +# Output file base name for HTML help builder. +htmlhelp_basename = 'teuthologydoc' + + +# -- 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': '', +} + +# 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 = [ + ('index', 'teuthology.tex', u'teuthology Documentation', + u'Inktank Storage, Inc.', '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 = [ + ('index', 'teuthology', u'teuthology Documentation', + [u'Inktank Storage, Inc.'], 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 = [ + ('index', 'teuthology', u'teuthology Documentation', + u'Inktank Storage, Inc.', 'teuthology', '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/contents.rst b/docs/contents.rst new file mode 100644 index 000000000..5bf830f3d --- /dev/null +++ b/docs/contents.rst @@ -0,0 +1,17 @@ +Content Index +============= + +.. toctree:: + :maxdepth: 2 + + index.rst + INSTALL.rst + LAB_SETUP.rst + ChangeLog.rst + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` diff --git a/docs/index.rst b/docs/index.rst new file mode 100644 index 000000000..72a335581 --- /dev/null +++ b/docs/index.rst @@ -0,0 +1 @@ +.. include:: ../README.rst diff --git a/docs/reference/create_nodes.py b/docs/reference/create_nodes.py deleted file mode 100644 index 3e23ff281..000000000 --- a/docs/reference/create_nodes.py +++ /dev/null @@ -1,60 +0,0 @@ -#!/usr/bin/env python -# A sample script that can be used while setting up a new teuthology lab -# This script will connect to the machines in your lab, and populate a -# paddles instance with their information. -# -# You WILL need to modify it. - -import logging -import sys -from teuthology.orchestra.remote import Remote -from teuthology.lock import update_inventory -paddles_url = 'http://pulpito.example.com:8080/nodes/' - -machine_type = 'magna' -lab_domain = 'example.com' -user = 'ubuntu' -# We are populating 'magna003' -> 'magna122' -machine_index_range = range(3, 123) - -log = logging.getLogger(sys.argv[0]) -logging.getLogger("requests.packages.urllib3.connectionpool").setLevel( - logging.WARNING) - - -def get_shortname(machine_type, index): - """ - Given a number, return a hostname. Example: - get_shortname('magna', 3) = 'magna003' - - Modify to suit your needs. - """ - return machine_type + str(index).rjust(3, '0') - - -def get_info(user, fqdn): - remote = Remote('@'.join((user, fqdn))) - return remote.inventory_info - -def main(): - shortnames = [get_shortname(machine_type, i) for i in range(3, 123)] - fqdns = ['.'.join((name, lab_domain)) for name in shortnames] - for fqdn in fqdns: - log.info("Creating %s", fqdn) - try: - info = get_info(user, fqdn) - except Exception: - info = dict( - name=fqdn, - up=False, - ) - info.update(dict( - locked=True, - locked_by='initial@setup', - machine_type=machine_type, - description="Initial node creation", - )) - update_inventory(info) - -if __name__ == '__main__': - main() diff --git a/docs/reference/nginx_paddles b/docs/reference/nginx_paddles deleted file mode 100644 index c1e0896f2..000000000 --- a/docs/reference/nginx_paddles +++ /dev/null @@ -1,11 +0,0 @@ -server { - server_name paddles.example.com; - proxy_send_timeout 600; - proxy_connect_timeout 240; - location / { - proxy_pass http://paddles.example.com:8080/; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - } - -} diff --git a/docs/reference/nginx_pulpito b/docs/reference/nginx_pulpito deleted file mode 100644 index de9147ca8..000000000 --- a/docs/reference/nginx_pulpito +++ /dev/null @@ -1,11 +0,0 @@ -server { - server_name pulpito.example.com; - proxy_send_timeout 600; - proxy_connect_timeout 240; - location / { - proxy_pass http://pulpito.example.com:8081/; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - } - -} diff --git a/docs/reference/nginx_test_logs b/docs/reference/nginx_test_logs deleted file mode 100644 index 139a0a197..000000000 --- a/docs/reference/nginx_test_logs +++ /dev/null @@ -1,7 +0,0 @@ -server { - allow all; - autoindex on; - server_name test_logs.example.com; - root /home/teuthworker/archive; - default_type text/plain; -} diff --git a/docs/reference/worker_start.sh b/docs/reference/worker_start.sh deleted file mode 100644 index 500f2cbab..000000000 --- a/docs/reference/worker_start.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/bash - -# A simple script used by Red Hat to start teuthology-worker processes. - -ARCHIVE=$HOME/archive -WORKER_LOGS=$ARCHIVE/worker_logs - -function start_workers_for_tube { - echo "Starting $2 workers for $1" - for i in `seq 1 $2` - do - teuthology-worker -v --archive-dir $ARCHIVE --tube $1 --log-dir $WORKER_LOGS & - done -} - -function start_all { - start_workers_for_tube plana 50 - start_workers_for_tube mira 50 - start_workers_for_tube vps 80 - start_workers_for_tube burnupi 10 - start_workers_for_tube tala 5 - start_workers_for_tube saya 10 - start_workers_for_tube multi 100 -} - -function main { - echo "$@" - if [[ -z "$@" ]] - then - start_all - elif [ ! -z "$2" ] && [ "$2" -gt "0" ] - then - start_workers_for_tube $1 $2 - else - echo "usage: $0 [tube_name number_of_workers]" >&2 - exit 1 - fi -} - -main $@ diff --git a/docs/source/ChangeLog.rst b/docs/source/ChangeLog.rst deleted file mode 100644 index 705b29591..000000000 --- a/docs/source/ChangeLog.rst +++ /dev/null @@ -1 +0,0 @@ -.. include:: ../../ChangeLog.rst diff --git a/docs/source/INSTALL.rst b/docs/source/INSTALL.rst deleted file mode 100644 index 545ae4fa1..000000000 --- a/docs/source/INSTALL.rst +++ /dev/null @@ -1 +0,0 @@ -.. include:: ../../INSTALL.rst diff --git a/docs/source/LAB_SETUP.rst b/docs/source/LAB_SETUP.rst deleted file mode 100644 index d9a11f5fb..000000000 --- a/docs/source/LAB_SETUP.rst +++ /dev/null @@ -1 +0,0 @@ -.. include:: ../../LAB_SETUP.rst diff --git a/docs/source/_themes/ceph/static/font/ApexSans-Book.eot b/docs/source/_themes/ceph/static/font/ApexSans-Book.eot deleted file mode 100644 index 332c8cbe3..000000000 Binary files a/docs/source/_themes/ceph/static/font/ApexSans-Book.eot and /dev/null differ diff --git a/docs/source/_themes/ceph/static/font/ApexSans-Book.svg b/docs/source/_themes/ceph/static/font/ApexSans-Book.svg deleted file mode 100644 index 8af9af2bb..000000000 --- a/docs/source/_themes/ceph/static/font/ApexSans-Book.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/docs/source/_themes/ceph/static/font/ApexSans-Book.ttf b/docs/source/_themes/ceph/static/font/ApexSans-Book.ttf deleted file mode 100644 index 42a008463..000000000 Binary files a/docs/source/_themes/ceph/static/font/ApexSans-Book.ttf and /dev/null differ diff --git a/docs/source/_themes/ceph/static/font/ApexSans-Book.woff b/docs/source/_themes/ceph/static/font/ApexSans-Book.woff deleted file mode 100644 index 681a70ee9..000000000 Binary files a/docs/source/_themes/ceph/static/font/ApexSans-Book.woff and /dev/null differ diff --git a/docs/source/_themes/ceph/static/font/ApexSans-Medium.eot b/docs/source/_themes/ceph/static/font/ApexSans-Medium.eot deleted file mode 100644 index e06fd2154..000000000 Binary files a/docs/source/_themes/ceph/static/font/ApexSans-Medium.eot and /dev/null differ diff --git a/docs/source/_themes/ceph/static/font/ApexSans-Medium.svg b/docs/source/_themes/ceph/static/font/ApexSans-Medium.svg deleted file mode 100644 index 6c624ec97..000000000 --- a/docs/source/_themes/ceph/static/font/ApexSans-Medium.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/docs/source/_themes/ceph/static/font/ApexSans-Medium.ttf b/docs/source/_themes/ceph/static/font/ApexSans-Medium.ttf deleted file mode 100644 index 44c281e33..000000000 Binary files a/docs/source/_themes/ceph/static/font/ApexSans-Medium.ttf and /dev/null differ diff --git a/docs/source/_themes/ceph/static/font/ApexSans-Medium.woff b/docs/source/_themes/ceph/static/font/ApexSans-Medium.woff deleted file mode 100644 index b7c88194b..000000000 Binary files a/docs/source/_themes/ceph/static/font/ApexSans-Medium.woff and /dev/null differ diff --git a/docs/source/_themes/ceph/static/nature.css_t b/docs/source/_themes/ceph/static/nature.css_t deleted file mode 100644 index 394a6339f..000000000 --- a/docs/source/_themes/ceph/static/nature.css_t +++ /dev/null @@ -1,325 +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 ----------------------------------------------------------- */ - -@font-face { - font-family: 'ApexSansMedium'; - src: url('font/ApexSans-Medium.eot'); - src: url('font/ApexSans-Medium.eot?#iefix') format('embedded-opentype'), - url('font/ApexSans-Medium.woff') format('woff'), - url('font/ApexSans-Medium.ttf') format('truetype'), - url('font/ApexSans-Medium.svg#FontAwesome') format('svg'); - font-weight: normal; - font-style: normal; -} - -@font-face { - font-family: 'ApexSansBook'; - src: url('font/ApexSans-Book.eot'); - src: url('font/ApexSans-Book.eot?#iefix') format('embedded-opentype'), - url('font/ApexSans-Book.woff') format('woff'), - url('font/ApexSans-Book.ttf') format('truetype'), - url('font/ApexSans-Book.svg#FontAwesome') format('svg'); - font-weight: normal; - font-style: normal; -} - -body { - font: 14px/1.4 Helvetica, Arial, sans-serif; - background-color: #E6E8E8; - color: #37424A; - margin: 0; - padding: 0; - border-top: 5px solid #F05C56; -} - -div.documentwrapper { - float: left; - width: 100%; -} - -div.bodywrapper { - margin: 0 0 0 330px; -} - -hr { - border: 1px solid #B1B4B6; -} - -div.document { - background-color: #ffffff; -} - -div.body { - background-color: #ffffff; - color: #3E4349; - padding: 0 30px 30px 30px; -} - -div.footer { - color: #222B31; - width: 100%; - padding: 13px 0; - text-align: center; - font-size: 75%; -} - -div.footer a { - color: #444; - text-decoration: underline; -} - -div.related { - background-color: #80D2DC; - line-height: 32px; - color: #37424A; - // text-shadow: 0px 1px 0 #444; - font-size: 100%; - border-top: #9C4850 5px solid; -} - -div.related a { - color: #37424A; - text-decoration: none; -} - -div.related a:hover { - color: #fff; - // text-decoration: underline; -} - -div.sphinxsidebar { - // font-size: 100%; - line-height: 1.5em; - width: 330px; -} - -div.sphinxsidebarwrapper{ - padding: 20px 0; - background-color: #efefef; -} - -div.sphinxsidebar h3, -div.sphinxsidebar h4 { - font-family: ApexSansMedium; - color: #e6e8e8; - font-size: 1.2em; - font-weight: normal; - margin: 0; - padding: 5px 10px; - background-color: #5e6a71; - // text-shadow: 1px 1px 0 white; - text-transform: uppercase; -} - -div.sphinxsidebar h4{ - font-size: 1.1em; -} - -div.sphinxsidebar h3 a { - color: #e6e8e8; -} - - -div.sphinxsidebar p { - color: #888; - padding: 5px 20px; -} - -div.sphinxsidebar p.topless { -} - -div.sphinxsidebar ul { - margin: 10px 5px 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: #F05C56; - text-decoration: none; -} - -a:hover { - color: #F05C56; - text-decoration: underline; -} - -div.body h1, -div.body h2, -div.body h3, -div.body h4, -div.body h5, -div.body h6 { - // font-family: ApexSansMedium; - // background-color: #80D2DC; - // font-weight: normal; - // color: #37424a; - margin: 30px 0px 10px 0px; - padding: 5px 0 5px 0px; - // text-shadow: 0px 1px 0 white; - text-transform: uppercase; -} - -div.body h1 { font: 20px/2.0 ApexSansBook; color: #37424A; border-top: 20px solid white; margin-top: 0; } -div.body h2 { font: 18px/1.8 ApexSansMedium; background-color: #5E6A71; color: #E6E8E8; padding: 5px 10px; } -div.body h3 { font: 16px/1.6 ApexSansMedium; color: #37424A; } -div.body h4 { font: 14px/1.4 Helvetica, Arial, sans-serif; color: #37424A; } -div.body h5 { font: 12px/1.2 Helvetica, Arial, sans-serif; color: #37424A; } -div.body h6 { font-size: 100%; color: #37424A; } - -// div.body h2 { font-size: 150%; background-color: #E6E8E8; color: #37424A; } -// div.body h3 { font-size: 120%; background-color: #E6E8E8; color: #37424A; } -// div.body h4 { font-size: 110%; background-color: #E6E8E8; color: #37424A; } -// div.body h5 { font-size: 100%; background-color: #E6E8E8; color: #37424A; } -// div.body h6 { font-size: 100%; background-color: #E6E8E8; color: #37424A; } - -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: #e6e8e8; - border: 1px solid #ccc; -} - -div.seealso { - background-color: #ffc; - border: 1px solid #ff6; -} - -div.topic { - background-color: #efefef; -} - -div.warning { - background-color: #F05C56; - border: 1px solid #9C4850; - color: #fff; -} - -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 #5e6a71; - font-size: 1.1em; - margin: 1.5em; - -webkit-box-shadow: 1px 1px 1px #e6e8e8; - -moz-box-shadow: 1px 1px 1px #e6e8e8; -} - -tt { - background-color: #ecf0f3; - color: #222; - /* padding: 1px 2px; */ - font-size: 15px; - 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; -} - -table.docutils { - margin: 1.5em; -} - -div.sidebar { - border: 1px solid #5E6A71; - background-color: #E6E8E8; -} - -div.admonition.tip { - background-color: #80D2DC; - border: 1px solid #55AEBA; -} - -div.admonition.important { - background-color: #F05C56; - border: 1px solid #9C4850; - color: #fff; -} - -div.tip tt.literal { - background-color: #55aeba; - color: #fff; -} - -div.important tt.literal { - background-color: #9C4850; - color: #fff; -} - -h2 .literal { - color: #fff; - background-color: #37424a; -} - -dl.glossary dt { - font-size: 1.0em; - padding-top:20px; - -} \ No newline at end of file diff --git a/docs/source/_themes/ceph/theme.conf b/docs/source/_themes/ceph/theme.conf deleted file mode 100644 index 1cc400446..000000000 --- a/docs/source/_themes/ceph/theme.conf +++ /dev/null @@ -1,4 +0,0 @@ -[theme] -inherit = basic -stylesheet = nature.css -pygments_style = tango diff --git a/docs/source/conf.py b/docs/source/conf.py deleted file mode 100644 index 7a3200f79..000000000 --- a/docs/source/conf.py +++ /dev/null @@ -1,260 +0,0 @@ -# -*- coding: utf-8 -*- -# -# teuthology documentation build configuration file, created by -# sphinx-quickstart on Thu Aug 7 12:30:36 2014. -# -# 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.autodoc', -] - -# Add any paths that contain templates here, relative to this directory. -templates_path = ['_templates'] - -# The suffix of source filenames. -source_suffix = '.rst' - -# The encoding of source files. -#source_encoding = 'utf-8-sig' - -# The master toctree document. -master_doc = 'contents' - -# General information about the project. -project = u'teuthology' -copyright = u'2014, Inktank Storage, Inc.' - -# 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.1.0' -# The full version, including alpha/beta/rc tags. -release = '0.1.0' - -# The language for content autogenerated by Sphinx. Refer to documentation -# for a list of supported languages. -#language = None - -# There are two options for replacing |today|: either, you set today to some -# non-false value, then it is used: -#today = '' -# Else, today_fmt is used as the format for a strftime call. -#today_fmt = '%B %d, %Y' - -# 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 - - -# -- 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 = 'ceph' - -# 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 = ['_themes'] - -# 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 (within the static path) to use as favicon of the -# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 -# pixels large. -#html_favicon = None - -# Add any paths that contain custom static files (such as style sheets) here, -# relative to this directory. They are copied after the builtin static files, -# so a file named "default.css" will overwrite the builtin "default.css". -#html_static_path = ['_static'] - -# 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 - -# Output file base name for HTML help builder. -htmlhelp_basename = 'teuthologydoc' - - -# -- 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': '', -} - -# 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 = [ - ('index', 'teuthology.tex', u'teuthology Documentation', - u'Inktank Storage, Inc.', '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 = [ - ('index', 'teuthology', u'teuthology Documentation', - [u'Inktank Storage, Inc.'], 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 = [ - ('index', 'teuthology', u'teuthology Documentation', - u'Inktank Storage, Inc.', 'teuthology', '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/contents.rst b/docs/source/contents.rst deleted file mode 100644 index 5bf830f3d..000000000 --- a/docs/source/contents.rst +++ /dev/null @@ -1,17 +0,0 @@ -Content Index -============= - -.. toctree:: - :maxdepth: 2 - - index.rst - INSTALL.rst - LAB_SETUP.rst - ChangeLog.rst - -Indices and tables -================== - -* :ref:`genindex` -* :ref:`modindex` -* :ref:`search` diff --git a/docs/source/index.rst b/docs/source/index.rst deleted file mode 100644 index a6210d3d8..000000000 --- a/docs/source/index.rst +++ /dev/null @@ -1 +0,0 @@ -.. include:: ../../README.rst diff --git a/tox.ini b/tox.ini index c03b22768..8cfc64a37 100644 --- a/tox.ini +++ b/tox.ini @@ -35,7 +35,7 @@ commands=flake8 --select=F {posargs:teuthology scripts} [testenv:docs] basepython=python -changedir=docs/source +changedir=docs deps=sphinx commands= sphinx-build -W -b html -d {envtmpdir}/doctrees . {envtmpdir}/html