Re-organize juno specs

As discussed at our nova meetings, reorganize the juno specs into
three directories:

 - proposed: things proposed which weren't approved
 - approved: things we approved but didn't implement
 - implemented: things approved and implemented

The first I suspect is the most controversial. I've done this
because I worry about the case where a future developer wants to
pick up something dropped by a previous developer, but has trouble
finding previous proposed specifications on the topic. Note that
the actual proposed specs for Juno are adding in a later commit.

Change-Id: Idcf55ca37a83d7098dcb7c2971240c4e8fd23dc8
This commit is contained in:
Michael Still 2014-09-17 17:01:52 +10:00
parent 7fc42f2290
commit f0b8204072
94 changed files with 161 additions and 5 deletions

View File

@ -14,6 +14,15 @@ The layout of this repository is::
specs/<release>/
Where there are two sub-directories:
specs/<release>/approved: specifications approved but not yet implemented
specs/<release>/implemented: implemented specifications
This directory structure allows you to see what we thought about doing,
decided to do, and actually got done. Users interested in functionality in a
given release should only refer to the ``implemented`` directory.
You can find an example spec in ``specs/template.rst``.
Specifications are proposed for a given release by adding them to the

View File

@ -17,7 +17,7 @@ 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('.'))
sys.path.insert(0, os.path.abspath('.'))
# -- General configuration -----------------------------------------------------
@ -26,7 +26,8 @@ import os
# 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',
extensions = ['redirect',
'sphinx.ext.autodoc',
'sphinx.ext.intersphinx',
'sphinx.ext.todo',
'sphinx.ext.viewcode',

View File

@ -24,13 +24,21 @@ Contents:
readme
specs/*
Juno approved specs:
June implemented specs:
.. toctree::
:glob:
:maxdepth: 1
specs/juno/*
specs/juno/implemented/*
Juno approved (but not implemented) specs:
.. toctree::
:glob:
:maxdepth: 1
specs/juno/approved/*
==================
Indices and tables

50
doc/source/redirect.py Normal file
View File

@ -0,0 +1,50 @@
# A simple sphinx plugin which creates HTML redirections from old names
# to new names. It does this by looking for files named "redirect" in
# the documentation source and using the contents to create simple HTML
# redirection pages for changed filenames.
import os.path
from sphinx.application import ENV_PICKLE_FILENAME
from sphinx.util.console import bold
def setup(app):
from sphinx.application import Sphinx
if not isinstance(app, Sphinx):
return
app.connect('build-finished', emit_redirects)
def process_redirect_file(app, path, ent):
parent_path = path.replace(app.builder.srcdir, app.builder.outdir)
with open(os.path.join(path, ent)) as redirects:
for line in redirects.readlines():
from_path, to_path = line.rstrip().split(' ')
from_path = from_path.replace('.rst', '.html')
to_path = to_path.replace('.rst', '.html')
redirected_filename = os.path.join(parent_path, from_path)
redirected_directory = os.path.dirname(redirected_filename)
if not os.path.exists(redirected_directory):
os.makedirs(redirected_directory)
with open(redirected_filename, 'w') as f:
f.write('<html><head><meta http-equiv="refresh" content="0; '
'url=%s" /></head></html>'
% to_path)
def emit_redirects(app, exc):
app.builder.info(bold('scanning %s for redirects...') % app.builder.srcdir)
def process_directory(path):
for ent in os.listdir(path):
p = os.path.join(path, ent)
if os.path.isdir(p):
process_directory(p)
elif ent == 'redirects':
app.builder.info(' found redirects at %s' % p)
process_redirect_file(app, path, ent)
process_directory(app.builder.srcdir)
app.builder.info('...done')

88
specs/juno/redirects Normal file
View File

@ -0,0 +1,88 @@
add-differencing-vhdx-resize-support.rst implemented/add-differencing-vhdx-resize-support.rst
add-ironic-driver.rst implemented/add-ironic-driver.rst
allow-image-to-be-specified-during-rescue.rst implemented/allow-image-to-be-specified-during-rescue.rst
backportable-db-migrations-juno.rst implemented/backportable-db-migrations-juno.rst
better-support-for-multiple-networks.rst implemented/better-support-for-multiple-networks.rst
compute-manager-objects-juno.rst implemented/compute-manager-objects-juno.rst
config-drive-image-property.rst implemented/config-drive-image-property.rst
convert_ec2_api_to_use_nova_objects.rst implemented/convert_ec2_api_to_use_nova_objects.rst
cross-service-request-id.rst implemented/cross-service-request-id.rst
enabled-qemu-memballoon-stats.rst implemented/enabled-qemu-memballoon-stats.rst
extensible-resource-tracking.rst implemented/extensible-resource-tracking.rst
find-host-and-evacuate-instance.rst implemented/find-host-and-evacuate-instance.rst
hyper-v-console-log.rst implemented/hyper-v-console-log.rst
hyper-v-soft-reboot.rst implemented/hyper-v-soft-reboot.rst
i18n-enablement.rst implemented/i18n-enablement.rst
instance-network-info-hook.rst implemented/instance-network-info-hook.rst
juno-slaveification.rst implemented/juno-slaveification.rst
libvirt-disk-discard-option.rst implemented/libvirt-disk-discard-option.rst
libvirt-domain-listing-speedup.rst implemented/libvirt-domain-listing-speedup.rst
libvirt-driver-domain-metadata.rst implemented/libvirt-driver-domain-metadata.rst
libvirt-lxc-user-namespaces.rst implemented/libvirt-lxc-user-namespaces.rst
libvirt-volume-snap-network-disk.rst implemented/libvirt-volume-snap-network-disk.rst
move-prep-resize-to-conductor.rst implemented/move-prep-resize-to-conductor.rst
nfv-multiple-if-1-net.rst implemented/nfv-multiple-if-1-net.rst
object-subclassing.rst implemented/object-subclassing.rst
on-demand-compute-update.rst implemented/on-demand-compute-update.rst
pci-passthrough-sriov.rst implemented/pci-passthrough-sriov.rst
per-aggregate-filters.rst implemented/per-aggregate-filters.rst
rbd-clone-image-handler.rst implemented/rbd-clone-image-handler.rst
refactor-network-api.rst implemented/refactor-network-api.rst
remove-cast-to-schedule-run-instance.rst implemented/remove-cast-to-schedule-run-instance.rst
rescue-attach-all-disks.rst implemented/rescue-attach-all-disks.rst
return-status-for-hypervisor-node.rst implemented/return-status-for-hypervisor-node.rst
scheduler-lib.rst implemented/scheduler-lib.rst
serial-ports.rst implemented/serial-ports.rst
server-group-quotas.rst implemented/server-group-quotas.rst
servers-list-support-multi-status.rst implemented/servers-list-support-multi-status.rst
support-cinderclient-v2.rst implemented/support-cinderclient-v2.rst
use-oslo-vmware.rst implemented/use-oslo-vmware.rst
user-defined-shutdown.rst implemented/user-defined-shutdown.rst
v2-on-v3-api.rst implemented/v2-on-v3-api.rst
v3-api-schema.rst implemented/v3-api-schema.rst
v3-diagnostics.rst implemented/v3-diagnostics.rst
virt-driver-numa-placement.rst implemented/virt-driver-numa-placement.rst
virt-driver-vcpu-topology.rst implemented/virt-driver-vcpu-topology.rst
virt-objects-juno.rst implemented/virt-objects-juno.rst
vmware-hot-plug.rst implemented/vmware-hot-plug.rst
vmware-spawn-refactor.rst implemented/vmware-spawn-refactor.rst
add-all-in-list-operator-to-extra-spec-ops.rst approved/add-all-in-list-operator-to-extra-spec-ops.rst
add-virtio-scsi-bus-for-bdm.rst approved/add-virtio-scsi-bus-for-bdm.rst
allocation-ratio-to-resource-tracker.rst approved/allocation-ratio-to-resource-tracker.rst
clean-logs.rst approved/clean-logs.rst
cold-migration-with-target.rst approved/cold-migration-with-target.rst
db2-database.rst approved/db2-database.rst
ec2-volume-and-snapshot-tags.rst approved/ec2-volume-and-snapshot-tags.rst
encryption-with-barbican.rst approved/encryption-with-barbican.rst
enforce-unique-instance-uuid-in-db.rst approved/enforce-unique-instance-uuid-in-db.rst
input-output-based-numa-scheduling.rst approved/input-output-based-numa-scheduling.rst
io-ops-weight.rst approved/io-ops-weight.rst
libvirt-driver-class-refactor.rst approved/libvirt-driver-class-refactor.rst
libvirt-sheepdog-backed-instances.rst approved/libvirt-sheepdog-backed-instances.rst
libvirt-start-lxc-from-block-devices.rst approved/libvirt-start-lxc-from-block-devices.rst
log-request-id-mappings.rst approved/log-request-id-mappings.rst
lvm-ephemeral-storage-encryption.rst approved/lvm-ephemeral-storage-encryption.rst
make-resource-tracker-use-objects.rst approved/make-resource-tracker-use-objects.rst
migrate-libvirt-volumes.rst approved/migrate-libvirt-volumes.rst
nova-pagination.rst approved/nova-pagination.rst
persistent-resource-claim.rst approved/persistent-resource-claim.rst
quiesced-image-snapshots-with-qemu-guest-agent.rst approved/quiesced-image-snapshots-with-qemu-guest-agent.rst
restrict-image-isolation-with-defined-keys.rst approved/restrict-image-isolation-with-defined-keys.rst
return-all-servers-during-multiple-create.rst approved/return-all-servers-during-multiple-create.rst
selecting-subnet-when-creating-vm.rst approved/selecting-subnet-when-creating-vm.rst
server-count-api.rst approved/server-count-api.rst
standardize-nova-image.rst approved/standardize-nova-image.rst
string-field-max-length.rst approved/string-field-max-length.rst
support-console-log-migration.rst approved/support-console-log-migration.rst
tag-instances.rst approved/tag-instances.rst
use-libvirt-storage-pools.rst approved/use-libvirt-storage-pools.rst
vif-vhostuser.rst approved/vif-vhostuser.rst
virt-driver-cpu-pinning.rst approved/virt-driver-cpu-pinning.rst
virt-driver-large-pages.rst approved/virt-driver-large-pages.rst
vmware-driver-ova-support.rst approved/vmware-driver-ova-support.rst
vmware-ephemeral-disk-support.rst approved/vmware-ephemeral-disk-support.rst
vmware-spbm-support.rst approved/vmware-spbm-support.rst
vmware-vsan-support.rst approved/vmware-vsan-support.rst
websocket-proxy-to-host-security.rst approved/websocket-proxy-to-host-security.rst
xenapi-set-ipxe-url-as-img-metadata.rst approved/xenapi-set-ipxe-url-as-img-metadata.rst
xenapi-vcpu-topology.rst approved/xenapi-vcpu-topology.rst

View File

@ -93,7 +93,7 @@ class TestTitles(testtools.TestCase):
spec = docutils.core.publish_doctree(template)
template_titles = self._get_titles(spec)
files = glob.glob("specs/%s/*" % release)
files = glob.glob("specs/%s/*/*" % release)
for filename in files:
self.assertTrue(filename.endswith(".rst"),
"spec's file must uses 'rst' extension.")