More string fixes and initial add of docs

This commit is contained in:
Joshua Harlow 2012-03-30 12:56:55 -07:00
parent 1763ccabee
commit 542939bd0b
7 changed files with 238 additions and 10 deletions

View File

@ -33,7 +33,7 @@ LOG = logging.getLogger(__name__)
class DBInstaller(db.DBInstaller): class DBInstaller(db.DBInstaller):
def _configure_db_confs(self): def _configure_db_confs(self):
LOG.info("Fixing up %s mysql configs.", self.distro.name) LOG.info("Fixing up %r mysql configs.", self.distro.name)
fc = sh.load_file('/etc/mysql/my.cnf') fc = sh.load_file('/etc/mysql/my.cnf')
lines = fc.splitlines() lines = fc.splitlines()
new_lines = list() new_lines = list()
@ -52,7 +52,7 @@ class RabbitPackager(apt.AptPackager):
#https://bugs.launchpad.net/ubuntu/+source/rabbitmq-server/+bug/878597 #https://bugs.launchpad.net/ubuntu/+source/rabbitmq-server/+bug/878597
#https://bugs.launchpad.net/ubuntu/+source/rabbitmq-server/+bug/878600 #https://bugs.launchpad.net/ubuntu/+source/rabbitmq-server/+bug/878600
name = pkg['name'] name = pkg['name']
LOG.debug("Handling special remove of %s." % (name)) LOG.debug("Handling special remove of %r" % (name))
pkg_full = self._format_pkg_name(name, pkg.get("version")) pkg_full = self._format_pkg_name(name, pkg.get("version"))
cmd = apt.APT_REMOVE + [pkg_full] cmd = apt.APT_REMOVE + [pkg_full]
self._execute_apt(cmd) self._execute_apt(cmd)
@ -67,7 +67,7 @@ class RabbitPackager(apt.AptPackager):
#https://bugs.launchpad.net/ubuntu/+source/rabbitmq-server/+bug/878597 #https://bugs.launchpad.net/ubuntu/+source/rabbitmq-server/+bug/878597
#https://bugs.launchpad.net/ubuntu/+source/rabbitmq-server/+bug/878600 #https://bugs.launchpad.net/ubuntu/+source/rabbitmq-server/+bug/878600
name = pkg['name'] name = pkg['name']
LOG.debug("Handling special install of %s." % (name)) LOG.debug("Handling special install of %r" % (name))
#this seems to be a temporary fix for that bug #this seems to be a temporary fix for that bug
with tempfile.TemporaryFile() as f: with tempfile.TemporaryFile() as f:
pkg_full = self._format_pkg_name(name, pkg.get("version")) pkg_full = self._format_pkg_name(name, pkg.get("version"))

View File

@ -50,7 +50,7 @@ DEF_IDENT = 'unix-group:libvirtd'
class DBInstaller(db.DBInstaller): class DBInstaller(db.DBInstaller):
def _configure_db_confs(self): def _configure_db_confs(self):
LOG.info("Fixing up %s mysql configs.", self.distro.name) LOG.info("Fixing up %r mysql configs.", self.distro.name)
fc = sh.load_file('/etc/my.cnf') fc = sh.load_file('/etc/my.cnf')
lines = fc.splitlines() lines = fc.splitlines()
new_lines = list() new_lines = list()
@ -69,7 +69,7 @@ class HorizonInstaller(horizon.HorizonInstaller):
(user, group) = self._get_apache_user_group() (user, group) = self._get_apache_user_group()
# This is recorded so it gets cleaned up during uninstall # This is recorded so it gets cleaned up during uninstall
self.tracewriter.file_touched(SOCKET_CONF) self.tracewriter.file_touched(SOCKET_CONF)
LOG.info("Fixing up %s and %s files" % (SOCKET_CONF, HTTPD_CONF)) LOG.info("Fixing up %r and %r files" % (SOCKET_CONF, HTTPD_CONF))
with sh.Rooted(True): with sh.Rooted(True):
# Fix the socket prefix to someplace we can use # Fix the socket prefix to someplace we can use
fc = "WSGISocketPrefix %s" % (sh.joinpths(self.log_dir, "wsgi-socket")) fc = "WSGISocketPrefix %s" % (sh.joinpths(self.log_dir, "wsgi-socket"))

View File

@ -47,13 +47,13 @@ class Packager(object):
def pre_install(self, pkg, params=None): def pre_install(self, pkg, params=None):
cmds = pkg.get('pre-install') cmds = pkg.get('pre-install')
if cmds: if cmds:
LOG.info("Running pre-install commands for package %s.", LOG.info("Running pre-install commands for package %r.",
pkg['name']) pkg['name'])
utils.execute_template(*cmds, params=params) utils.execute_template(*cmds, params=params)
def post_install(self, pkg, params=None): def post_install(self, pkg, params=None):
cmds = pkg.get('post-install') cmds = pkg.get('post-install')
if cmds: if cmds:
LOG.info("Running post-install commands for package %s.", LOG.info("Running post-install commands for package %r.",
pkg['name']) pkg['name'])
utils.execute_template(*cmds, params=params) utils.execute_template(*cmds, params=params)

View File

@ -33,7 +33,7 @@ def _make_pip_name(name, version):
def install(pip, distro): def install(pip, distro):
name = pip['name'] name = pip['name']
root_cmd = distro.get_command_config('pip') root_cmd = distro.get_command_config('pip')
LOG.audit("Installing python package (%s) using pip command (%s)" % (name, root_cmd)) LOG.audit("Installing python package %r using pip command %s" % (name, root_cmd))
name_full = _make_pip_name(name, pip.get('version')) name_full = _make_pip_name(name, pip.get('version'))
real_cmd = [root_cmd, 'install'] + PIP_INSTALL_CMD_OPTS real_cmd = [root_cmd, 'install'] + PIP_INSTALL_CMD_OPTS
options = pip.get('options') options = pip.get('options')
@ -49,12 +49,12 @@ def uninstall(pip, distro, skip_errors=True):
try: try:
# Versions don't seem to matter here... # Versions don't seem to matter here...
name = _make_pip_name(pip['name'], None) name = _make_pip_name(pip['name'], None)
LOG.audit("Uninstalling python package (%s) using pip command (%s)" % (name, root_cmd)) LOG.audit("Uninstalling python package %r using pip command %s" % (name, root_cmd))
cmd = [root_cmd, 'uninstall'] + PIP_UNINSTALL_CMD_OPTS + [name] cmd = [root_cmd, 'uninstall'] + PIP_UNINSTALL_CMD_OPTS + [name]
sh.execute(*cmd, run_as_root=True) sh.execute(*cmd, run_as_root=True)
except excp.ProcessExecutionError: except excp.ProcessExecutionError:
if skip_errors: if skip_errors:
LOG.debug(("Ignoring execution error that occured when uninstalling pip %s!" LOG.debug(("Ignoring execution error that occured when uninstalling pip %r!"
" (this may be ok if it was uninstalled by a previous component)") % (name)) " (this may be ok if it was uninstalled by a previous component)") % (name))
else: else:
raise raise

130
docs/Makefile Normal file
View File

@ -0,0 +1,130 @@
# Makefile for Sphinx documentation
#
# You can set these variables from the command line.
SPHINXOPTS =
SPHINXBUILD = sphinx-build
PAPER =
BUILDDIR = build
# Internal variables.
PAPEROPT_a4 = -D latex_paper_size=a4
PAPEROPT_letter = -D latex_paper_size=letter
ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source
.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest
help:
@echo "Please use \`make <target>' where <target> 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 " 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 " text to make text files"
@echo " man to make manual pages"
@echo " changes to make an overview of all changed/added/deprecated items"
@echo " linkcheck to check all external links for integrity"
@echo " doctest to run all doctests embedded in the documentation (if enabled)"
clean:
-rm -rf $(BUILDDIR)/*
html:
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
dirhtml:
$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
singlehtml:
$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
@echo
@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
pickle:
$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
@echo
@echo "Build finished; now you can process the pickle files."
json:
$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
@echo
@echo "Build finished; now you can process the JSON files."
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."
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/FubuMVC.qhcp"
@echo "To view the help file:"
@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/FubuMVC.qhc"
devhelp:
$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
@echo
@echo "Build finished."
@echo "To view the help file:"
@echo "# mkdir -p $$HOME/.local/share/devhelp/FubuMVC"
@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/FubuMVC"
@echo "# devhelp"
epub:
$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
@echo
@echo "Build finished. The epub file is in $(BUILDDIR)/epub."
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)."
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."
text:
$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
@echo
@echo "Build finished. The text files are in $(BUILDDIR)/text."
man:
$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
@echo
@echo "Build finished. The manual pages are in $(BUILDDIR)/man."
changes:
$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
@echo
@echo "The overview file is in $(BUILDDIR)/changes."
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."
doctest:
$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
@echo "Testing of doctests in the sources finished, look at the " \
"results in $(BUILDDIR)/doctest/output.txt."

BIN
docs/source/img/logo.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

98
docs/source/index.rst Normal file
View File

@ -0,0 +1,98 @@
|DEVSTACKpy| is a set of **python** scripts and utilities to quickly
deploy an OpenStack cloud.
It is meant to be a full re-write of `DEVSTACK`_ which adds more
developer features (it is **not** meant to be a full deployment
system!).
Index
=====
- `Beginners guide`_
- `Examples`_
- `Bugs, hugs and code`_
- `Q+A`_
- `Solved problems/workarounds`_
- Advanced
- `Hacking`_
- `Adding your own distro`_
- `Adding your own persona`_
- `Design details`_
- `Known issues`_
Goals
=====
- To aid developers getting involved with OpenStack!
- To quickly build developer OpenStack environments in a clean
environment (as well as start, stop, and uninstall those
environments) with as little baggage as possible.
- To describe working configurations of OpenStack.
- Which code branches work together?
- What do config files look like for those branches?
- What packages are needed for installation for a given
distribution?
- To make it easier for developers to dive into OpenStack so that they
can productively contribute without having to understand every part
of the system at once.
- To make it easy to prototype cross-project features.
Features
========
- Supports more than one distribution.
- Currently RHEL 6.2 (with `epel`_), Ubuntu 11.10, Fedora 16
- Supports dry-run mode (to see what *would* happen)
- Supports varying installation *personas*
- See ``conf/personas/devstack.sh.yaml``
- A single ``stack.ini`` file that shows configuration used
- Supports install/uninstall/starting/stopping of OpenStack components.
- In various styles (daemonizing via `forking`_, `screen`_, `upstart`_)
- Written in python so it matches the style of other OpenStack
components.
- Extensively documented distribution specifics
- Packages and pip (with versions known to work!) dependencies
- Any needed distribution specific actions (ie service names…)
- See ``conf/distros``
- Follows standard software development practices (for everyones
sanity).
- Functions, classes, objects and more (oh my!)
- Still *readable* by someone with limited python knowledge.
- The ability to be unit-tested!
Important!
==========
**Warning:** Be sure to carefully read ``stack`` and any other scripts
you execute before you run them, as they install software and may alter
your networking configuration. We strongly recommend that you run
``stack`` in a clean and disposable virtual machine when you are first
getting started.
.. _DEVSTACK: http://devstack.org/
.. _Beginners
guide: https://github.com/yahoo/Openstack-DevstackPy/wiki/Simple-Setup
.. _Examples: https://github.com/yahoo/Openstack-DevstackPy/wiki/Examples
.. _Bugs, hugs and
code: https://github.com/yahoo/Openstack-DevstackPy/wiki/Bugs,-Hugs
.. _Q+A: https://github.com/yahoo/Openstack-DevstackPy/wiki/Questions-and-answers
.. _Solved
problems/workarounds: https://github.com/yahoo/Openstack-DevstackPy/wiki/Problems-Solved
.. _Hacking: https://github.com/yahoo/Openstack-DevstackPy/blob/master/HACKING.md
.. _Adding your own
distro: https://github.com/yahoo/Openstack-DevstackPy/wiki/Adding-a-new-distro.
.. _Adding your own
persona: https://github.com/yahoo/Openstack-DevstackPy/wiki/Adding-a-new-persona.
.. _Design
details: https://github.com/yahoo/Openstack-DevstackPy/wiki/Advanced
.. _Known
issues: https://github.com/yahoo/Openstack-DevstackPy/wiki/Known-issues
.. _epel: http://fedoraproject.org/wiki/EPEL
.. _forking: http://users.telenet.be/bartl/classicperl/fork/all.html
.. _screen: http://www.manpagez.com/man/1/screen/
.. _upstart: http://upstart.ubuntu.com/
.. |DEVSTACKpy| image:: http://farm8.staticflickr.com/7188/6821923128_35e84f868f_t.jpg