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:
parent
7fc42f2290
commit
f0b8204072
|
@ -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
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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')
|
|
@ -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
|
|
@ -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.")
|
||||
|
|
Loading…
Reference in New Issue