Add the initial specs framework

This is based on the infra-specs repo for structural reasons.

Change-Id: I641b3510df3720d46212b7f01811c03d533e5168
This commit is contained in:
Monty Taylor 2014-06-23 17:17:28 -04:00 committed by John Dickinson
parent 01c9224bc2
commit 39f23149dc
24 changed files with 697 additions and 1 deletions

7
.coveragerc Normal file
View File

@ -0,0 +1,7 @@
[run]
branch = True
source = swift-specs
omit = swift-specs/tests/*,swift-specs/openstack/*
[report]
ignore-errors = True

51
.gitignore vendored Normal file
View File

@ -0,0 +1,51 @@
*.py[cod]
# C extensions
*.so
# Packages
*.egg
*.egg-info
dist
build
eggs
parts
bin
var
sdist
develop-eggs
.installed.cfg
lib
lib64
# Installer logs
pip-log.txt
# Unit test / coverage reports
.coverage
.tox
nosetests.xml
.testrepository
# Translations
*.mo
# Mr Developer
.mr.developer.cfg
.project
.pydevproject
# Complexity
output/*.html
output/*/index.html
# Sphinx
doc/build
# pbr generates these
AUTHORS
ChangeLog
# Editors
*~
.*.swp

View File

@ -1,4 +1,4 @@
[gerrit]
host=review.openstack.org
port=29418
project=openstack/object-specs.git
project=openstack/swift-specs.git

3
.mailmap Normal file
View File

@ -0,0 +1,3 @@
# Format is:
# <preferred e-mail> <other e-mail 1>
# <preferred e-mail> <other e-mail 2>

7
.testr.conf Normal file
View File

@ -0,0 +1,7 @@
[DEFAULT]
test_command=OS_STDOUT_CAPTURE=${OS_STDOUT_CAPTURE:-1} \
OS_STDERR_CAPTURE=${OS_STDERR_CAPTURE:-1} \
OS_TEST_TIMEOUT=${OS_TEST_TIMEOUT:-60} \
${PYTHON:-python} -m subunit.run discover -t ./ . $LISTOPT $IDOPTION
test_id_option=--load-list $IDFILE
test_list_option=--list

15
CONTRIBUTING.rst Normal file
View File

@ -0,0 +1,15 @@
===========================
Contributing to swift-specs
===========================
If you would like to contribute to the development of OpenStack,
you must follow the steps in the "If you're a developer, start here"
section of this page:
http://wiki.openstack.org/HowToContribute
Once those steps have been completed, changes to OpenStack
should be submitted for review via the Gerrit tool, following
the workflow documented at:
http://wiki.openstack.org/GerritWorkflow

3
LICENSE Normal file
View File

@ -0,0 +1,3 @@
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
http://creativecommons.org/licenses/by/3.0/legalcode

5
MANIFEST.in Normal file
View File

@ -0,0 +1,5 @@
include LICENCE
exclude .gitignore
exclude .gitreview
global-exclude *.pyc

32
README.rst Normal file
View File

@ -0,0 +1,32 @@
======================
Swift Specs Repository
======================
This is a git repository for doing design review on enhancements to
OpenStack Swift. This provides an ability to ensure that everyone
has signed off on the approach to solving a problem early on.
Repository Structure
====================
The expected structure of the respository is as follows::
specs/
swift/
swift-bench/
swiftclient/
Implemented specs will be moved to an ``implemented`` directory
under the respective project directory.
Revisiting Specifications
=========================
We don't always get everything right the first time. If we realize we
need to revisit a specification because something changed, either we
now know more, or a new idea came in which we should embrace, we'll
manage this by proposing an update to the specification in question.
Learn As We Go
==============
This is a new way of attempting things, so we're going to be low in
process to begin with to figure out where we go from here. Expect some
early flexibility in evolving this effort over time.

82
doc/source/conf.py Executable file
View File

@ -0,0 +1,82 @@
# -*- coding: utf-8 -*-
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
# implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import os
import sys
sys.path.insert(0, os.path.abspath('../..'))
# -- General configuration ----------------------------------------------------
# Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
extensions = [
'sphinx.ext.autodoc',
'sphinx.ext.intersphinx'
]
# Optionally allow the use of sphinxcontrib.spelling to verify the
# spelling of the documents.
try:
import sphinxcontrib.spelling
extensions.append('sphinxcontrib.spelling')
except ImportError:
pass
# autodoc generation is a bit aggressive and a nuisance when doing heavy
# text edit cycles.
# execute "export SPHINX_DEBUG=1" in your terminal to disable
# The suffix of source filenames.
source_suffix = '.rst'
# The master toctree document.
master_doc = 'index'
# General information about the project.
project = u'swift-specs'
copyright = u'2014, OpenStack Foundation'
# 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
# The name of the Pygments (syntax highlighting) style to use.
pygments_style = 'sphinx'
# -- Options for HTML output --------------------------------------------------
# The theme to use for HTML and HTML Help pages. Major themes that come with
# Sphinx are currently 'default' and 'sphinxdoc'.
# html_theme_path = ["."]
# html_theme = '_theme'
# html_static_path = ['static']
# Output file base name for HTML help builder.
htmlhelp_basename = '%sdoc' % project
# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title, author, documentclass
# [howto/manual]).
latex_documents = [
('index',
'%s.tex' % project,
u'%s Documentation' % project,
u'OpenStack Foundation', 'manual'),
]
# Example configuration for intersphinx: refer to the Python standard library.
#intersphinx_mapping = {'http://docs.python.org/': None}

View File

@ -0,0 +1 @@
.. include:: ../../CONTRIBUTING.rst

48
doc/source/index.rst Normal file
View File

@ -0,0 +1,48 @@
Swift Design Specifications
===========================
Swift
-----
.. toctree::
:glob:
:maxdepth: 1
specs/swift/*
Swift Bench
-----------
.. toctree::
:glob:
:maxdepth: 1
specs/swift-bench/*
Swift Client
------------
.. toctree::
:glob:
:maxdepth: 1
specs/swiftclient/*
Specifications Repository Information
=====================================
.. toctree::
:maxdepth: 2
README <readme_link>
How to Contribute <contributing_link>
Sample Template <template_link>
Indices and tables
==================
* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`

View File

@ -0,0 +1 @@
.. include:: ../../README.rst

1
doc/source/specs Symbolic link
View File

@ -0,0 +1 @@
../../specs/

View File

@ -0,0 +1 @@
.. include:: ../../template.rst

1
requirements.txt Normal file
View File

@ -0,0 +1 @@
sphinx>=1.1.2,<1.2

25
setup.cfg Normal file
View File

@ -0,0 +1,25 @@
[metadata]
name = swift-specs
summary = OpenStack Swift Development Specifications
description-file =
README.rst
author = OpenStack
author-email = openstack-dev@lists.openstack.org
home-page = http://www.openstack.org/
classifier =
Environment :: OpenStack
Intended Audience :: Developers
Operating System :: POSIX :: Linux
[build_sphinx]
source-dir = doc/source
build-dir = doc/build
all_files = 1
[pbr]
warnerrors = True
skip_authors = True
skip_changelog = True
[upload_sphinx]
upload-dir = doc/build/html

22
setup.py Executable file
View File

@ -0,0 +1,22 @@
#!/usr/bin/env python
# Copyright (c) 2013 Hewlett-Packard Development Company, L.P.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
# implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# THIS FILE IS MANAGED BY THE GLOBAL REQUIREMENTS REPO - DO NOT EDIT
import setuptools
setuptools.setup(
setup_requires=['pbr'],
pbr=True)

View File

@ -0,0 +1,84 @@
::
This work is licensed under a Creative Commons Attribution 3.0
Unported License.
http://creativecommons.org/licenses/by/3.0/legalcode
==================
Test Specification
==================
This is a test specification. It should be removed after the first
real specification is merged.
Problem description
===================
A detailed description of the problem.
Proposed change
===============
Here is where you cover the change you propose to make in detail. How do you
propose to solve this problem?
If this is one part of a larger effort make it clear where this piece ends. In
other words, what's the scope of this effort?
Alternatives
------------
This is an optional section, where it does apply we'd just like a demonstration
that some thought has been put into why the proposed approach is the best one.
Implementation
==============
Assignee(s)
-----------
Who is leading the writing of the code? Or is this a blueprint where you're
throwing it out there to see who picks it up?
If more than one person is working on the implementation, please designate the
primary author and contact.
Primary assignee:
<launchpad-id or None>
Can optionally list additional ids if they intend on doing substantial
implementation work on this blueprint.
Work Items
----------
Work items or tasks -- break the feature up into the things that need to be
done to implement it. Those parts might end up being done by different people,
but we're mostly trying to understand the timeline for implementation.
Repositories
------------
Will any new git repositories need to be created?
Servers
-------
Will any new servers need to be created? What existing servers will
be affected?
DNS Entries
-----------
Will any other DNS entries need to be created or updated?
Dependencies
============
- Include specific references to specs and/or stories in infra, or in
other projects, that this one either depends on or is related to.
- Does this feature require any new library or program dependencies
not already in use?
- Does it require a new puppet module?

84
specs/swift/test.rst Normal file
View File

@ -0,0 +1,84 @@
::
This work is licensed under a Creative Commons Attribution 3.0
Unported License.
http://creativecommons.org/licenses/by/3.0/legalcode
==================
Test Specification
==================
This is a test specification. It should be removed after the first
real specification is merged.
Problem description
===================
A detailed description of the problem.
Proposed change
===============
Here is where you cover the change you propose to make in detail. How do you
propose to solve this problem?
If this is one part of a larger effort make it clear where this piece ends. In
other words, what's the scope of this effort?
Alternatives
------------
This is an optional section, where it does apply we'd just like a demonstration
that some thought has been put into why the proposed approach is the best one.
Implementation
==============
Assignee(s)
-----------
Who is leading the writing of the code? Or is this a blueprint where you're
throwing it out there to see who picks it up?
If more than one person is working on the implementation, please designate the
primary author and contact.
Primary assignee:
<launchpad-id or None>
Can optionally list additional ids if they intend on doing substantial
implementation work on this blueprint.
Work Items
----------
Work items or tasks -- break the feature up into the things that need to be
done to implement it. Those parts might end up being done by different people,
but we're mostly trying to understand the timeline for implementation.
Repositories
------------
Will any new git repositories need to be created?
Servers
-------
Will any new servers need to be created? What existing servers will
be affected?
DNS Entries
-----------
Will any other DNS entries need to be created or updated?
Dependencies
============
- Include specific references to specs and/or stories in infra, or in
other projects, that this one either depends on or is related to.
- Does this feature require any new library or program dependencies
not already in use?
- Does it require a new puppet module?

View File

@ -0,0 +1,84 @@
::
This work is licensed under a Creative Commons Attribution 3.0
Unported License.
http://creativecommons.org/licenses/by/3.0/legalcode
==================
Test Specification
==================
This is a test specification. It should be removed after the first
real specification is merged.
Problem description
===================
A detailed description of the problem.
Proposed change
===============
Here is where you cover the change you propose to make in detail. How do you
propose to solve this problem?
If this is one part of a larger effort make it clear where this piece ends. In
other words, what's the scope of this effort?
Alternatives
------------
This is an optional section, where it does apply we'd just like a demonstration
that some thought has been put into why the proposed approach is the best one.
Implementation
==============
Assignee(s)
-----------
Who is leading the writing of the code? Or is this a blueprint where you're
throwing it out there to see who picks it up?
If more than one person is working on the implementation, please designate the
primary author and contact.
Primary assignee:
<launchpad-id or None>
Can optionally list additional ids if they intend on doing substantial
implementation work on this blueprint.
Work Items
----------
Work items or tasks -- break the feature up into the things that need to be
done to implement it. Those parts might end up being done by different people,
but we're mostly trying to understand the timeline for implementation.
Repositories
------------
Will any new git repositories need to be created?
Servers
-------
Will any new servers need to be created? What existing servers will
be affected?
DNS Entries
-----------
Will any other DNS entries need to be created or updated?
Dependencies
============
- Include specific references to specs and/or stories in infra, or in
other projects, that this one either depends on or is related to.
- Does this feature require any new library or program dependencies
not already in use?
- Does it require a new puppet module?

114
template.rst Normal file
View File

@ -0,0 +1,114 @@
::
This work is licensed under a Creative Commons Attribution 3.0
Unported License.
http://creativecommons.org/licenses/by/3.0/legalcode
..
This template should be in ReSTructured text. Please do not delete
any of the sections in this template. If you have nothing to say
for a whole section, just write: "None". For help with syntax, see
http://sphinx-doc.org/rest.html To test out your formatting, see
http://www.tele3.cz/jbar/rest/rest.html
===============================
The Title of Your Specification
===============================
Include the URL of your blueprint:
https://blueprints.launchpad.net/swift/...
Introduction paragraph -- why are we doing anything?
Problem Description
===================
A detailed description of the problem.
Proposed Change
===============
Here is where you cover the change you propose to make in detail. How do you
propose to solve this problem?
If this is one part of a larger effort make it clear where this piece ends. In
other words, what's the scope of this effort?
Alternatives
------------
This is an optional section, where it does apply we'd just like a demonstration
that some thought has been put into why the proposed approach is the best one.
Implementation
==============
Assignee(s)
-----------
Who is leading the writing of the code? Or is this a blueprint where you're
throwing it out there to see who picks it up?
If more than one person is working on the implementation, please designate the
primary author and contact.
Primary assignee:
<launchpad-id or None>
Can optionally list additional ids if they intend on doing substantial
implementation work on this blueprint.
Work Items
----------
Work items or tasks -- break the feature up into the things that need to be
done to implement it. Those parts might end up being done by different people,
but we're mostly trying to understand the timeline for implementation.
Repositories
------------
Will any new git repositories need to be created?
Servers
-------
Will any new servers need to be created? What existing servers will
be affected?
DNS Entries
-----------
Will any other DNS entries need to be created or updated?
Documentation
-------------
Will this require a documentation change? If so, which documents?
Will it impact developer workflow? Will additional communication need
to be made?
Security
--------
Does this introduce any additional security risks, or are there
security-related considerations which should be discussed?
Testing
-------
What tests will be available or need to be constructed in order to
validate this? Unit/functional tests, development
environments/servers, etc.
Dependencies
============
- Include specific references to specs and/or stories in swift, or in
other projects, that this one either depends on or is related to.
- Does this feature require any new library or program dependencies
not already in use?
- Does it require a new puppet module?

0
test-requirements.txt Normal file
View File

25
tox.ini Normal file
View File

@ -0,0 +1,25 @@
[tox]
minversion = 1.6
envlist = docs
skipsdist = True
[testenv]
usedevelop = True
install_command = pip install -U {opts} {packages}
setenv =
VIRTUAL_ENV={envdir}
deps = -r{toxinidir}/requirements.txt
-r{toxinidir}/test-requirements.txt
[testenv:venv]
commands = {posargs}
[testenv:docs]
commands = python setup.py build_sphinx
[testenv:spelling]
deps =
-r{toxinidir}/requirements.txt
sphinxcontrib-spelling
PyEnchant
commands = sphinx-build -b spelling doc/source doc/build/spelling