Added first spec

This commit is contained in:
James Page 2016-05-26 12:05:31 +01:00
parent 8a7cefff30
commit c761de149f
6 changed files with 87 additions and 80 deletions

View File

@ -219,7 +219,7 @@ latex_documents = [
# dir menu entry, description, category)
texinfo_documents = [
('index', 'Charm-specs', u'Charm Design Specs',
u'OpenStack Charm Team', 'nova-specs', 'Design specifications for the Charm project.',
u'OpenStack Charm Team', 'charm-specs', 'Design specifications for the Charm project.',
'Miscellaneous'),
]

View File

@ -1,6 +1,6 @@
==========================
Nova Newton Specifications
==========================
===========================
Charm Newton Specifications
===========================
Template:

View File

@ -1 +1 @@
../../../../specs/newton-template.rst
../../../../specs/template.rst

View File

@ -1,6 +1,6 @@
::
Copyright <YEARS> <HOLDER> <--UPDATE THESE
Copyright 2016, Canonical UK
This work is licensed under a Creative Commons Attribution 3.0
Unported License.
@ -13,35 +13,59 @@
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
===============================
=========================
SR-IOV networking support
=========================
Include the URL of your StoryBoard story:
https://storyboard.openstack.org/...
Introduction paragraph -- why are we doing anything?
SR-IOV is a mechanism for passing hardware virtualized network functions (VF)
or full physical function (PF) directly to KVM instances; the OpenStack
charms should be updated to support this capability.
Problem Description
===================
A detailed description of the problem.
Using Open vSwitch and the chain of bridges, veth pairs and tap devices incurs
an overhead on network throughput and latency that is not acceptable in some
use cases for OpenStack.
SR-IOV allows part of (a VF) or a full (a PF) SR-IOV enabled network card to be
connected directly to a KVM instance via the virtualization layer provided
by libvirt.
Support for both of these types of passthrough was implemented in full in the
Mitaka release.
Proposed Change
===============
Here is where you cover the change you propose to make in detail. How do you
propose to solve this problem?
Supporting SR-IOV will require changes in three charms; specifcally:
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?
- neutron-api: Enablement of the ML2 mechanism driver for SR-IOV
- nova-cloud-controller: Enablement of appropriate scheduler filters for
management of PCI passthrough devices
- nova-compute: White listing of PCI devices for use by compute instances.
SR-IOV will be enabled using a configuration option on the neutron-api charm
'enable-sriov'; The nova-cloud-controller charm will be notified of the
state of this option via the relation between the nova-cloud-controller charm
and the neutron-api charm.
In the first implementation, a pci-device-whitelist configuration option
will be provided by the nova-compute charm to allow allocation of specific
PCI devices to compute instances. This is a direct pass through to a Nova
configuration option. Later revisions of this feature may use as-yet
unimplemented features in Juju to manage PCI device allocation at the unit
level.
Initial SR-IOV support will be agent-less (i.e. not using the
neutron-sriov-agent).
Flat and VLAN networking modes will be supported.
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.
None
Implementation
==============
@ -49,77 +73,77 @@ 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.
james-page
Gerrit Topic
------------
Use Gerrit topic "<topic_name>" for all patches related to this spec.
Use Gerrit topic "sriov-support" for all patches related to this spec.
.. code-block:: bash
git-review -t <topic_name>
git-review -t sriov-support
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.
Initial charm support for SR-IOV
################################
- neutron-api: Add enable-sriov config option, enable mechanism driver, pass
details to nova-cloud-controller charm.
- nova-cloud-controller: Add PciPassthroughFilter to scheduler filters when
enable-sriov is enabled by the neutron-api charm.
- nova-compute: Add pci-device-whitelist configuration option, pass directly
into nova.conf configuration file template(s).
Mojo specification for SR-IOV base enablement
#############################################
- Functional testing specification for deployment of an SR-IOV enabled
OpenStack Cloud.
SR-IOV VF/PF scheduling testing
###############################
- Focussed testing on ensuring that scheduling behaviour is tuned appropriately
when SR-IOV is in use within a cloud.
Juju device binding support
###########################
- Stretch objective for Newton cycle; superceeds pci-device-whitelist option
on nova-compute charm
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?
No new git repositories required.
Documentation
-------------
Will this require a documentation change? If so, which documents?
Will it impact developer workflow? Will additional communication need
to be made?
Updates to the README's in the impacted charms will be made as part of this change.
Security
--------
Does this introduce any additional security risks, or are there
security-related considerations which should be discussed?
No additional security concerns.
Testing
-------
What tests will be available or need to be constructed in order to
validate this? Unit/functional tests, development
environments/servers, etc.
Code changes will be covered by unit tests; functional testing will be done using
a Mojo specification.
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.
- OpenStack Mitaka.
- Does this feature require any new library or program dependencies
not already in use?
- SR-IOV enabled hardware in the Ubuntu OpenStack QA lab for functional testing
- Does it require a new puppet module?
- Juju device management support

View File

@ -17,10 +17,6 @@
The Title of Your Specification
===============================
Include the URL of your StoryBoard story:
https://storyboard.openstack.org/...
Introduction paragraph -- why are we doing anything?
Problem Description
@ -82,17 +78,6 @@ 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
-------------
@ -116,10 +101,8 @@ environments/servers, etc.
Dependencies
============
- Include specific references to specs and/or stories in infra, or in
- Include specific references to specs and/or stories, 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

@ -1,6 +1,6 @@
[tox]
# Hold back to 1.4, since that's what's in Fedora 20 repos
# and we don't need anything newer for nova-specs tests
# and we don't need anything newer for charm-specs tests
minversion = 1.4
envlist = docs,py27,pep8
skipsdist = True