Parse 'driver-notes-XXX' values
This seems to have been missed in the import from nova. Change-Id: Ic38c16aca1e94a9a06ad6efc7f53772b660b68da Signed-off-by: Stephen Finucane <stephen@that.guru>
This commit is contained in:
@@ -152,7 +152,8 @@ for every driver defined earlier in the file.
|
|||||||
:Mandatory: No
|
:Mandatory: No
|
||||||
|
|
||||||
Additional information about the implementation of this feature in driver
|
Additional information about the implementation of this feature in driver
|
||||||
``XXX``.
|
``XXX``. While this is optional, it is highly recommended for implementations
|
||||||
|
in the ``partial`` state.
|
||||||
|
|
||||||
For example:
|
For example:
|
||||||
|
|
||||||
@@ -175,6 +176,8 @@ For example:
|
|||||||
block storage from a running instance.
|
block storage from a running instance.
|
||||||
cli=my-project detach-volume <instance> <volume>
|
cli=my-project detach-volume <instance> <volume>
|
||||||
driver.slow-driver=complete
|
driver.slow-driver=complete
|
||||||
|
driver-notes.slow-driver=Works without issue if instance is off. When
|
||||||
|
hotplugging, requires version foo of the driver.
|
||||||
driver.fast-driver=complete
|
driver.fast-driver=complete
|
||||||
|
|
||||||
Notice that a driver is only required to implement detach-volume if they
|
Notice that a driver is only required to implement detach-volume if they
|
||||||
@@ -213,4 +216,6 @@ This is simply the combined example from above.
|
|||||||
block storage from a running instance.
|
block storage from a running instance.
|
||||||
cli=my-project detach-volume <instance> <volume>
|
cli=my-project detach-volume <instance> <volume>
|
||||||
driver.slow-driver=complete
|
driver.slow-driver=complete
|
||||||
|
driver-notes.slow-driver=Works without issue if instance is off. When
|
||||||
|
hotplugging, requires version foo of the driver.
|
||||||
driver.fast-driver=complete
|
driver.fast-driver=complete
|
||||||
|
@@ -0,0 +1,14 @@
|
|||||||
|
---
|
||||||
|
features:
|
||||||
|
- |
|
||||||
|
You can now specify ``driver-notes.XXX`` values. These are useful to
|
||||||
|
provide additional context for features with a status of ``partial``. For
|
||||||
|
example::
|
||||||
|
|
||||||
|
[operation.Cool_Feature]
|
||||||
|
title=Cool Feature
|
||||||
|
status=optional
|
||||||
|
notes=A pretty darn cool feature.
|
||||||
|
driver.foo=complete
|
||||||
|
driver.bar=partial
|
||||||
|
driver-notes.bar=Requires hardware support.
|
@@ -104,7 +104,13 @@ class Matrix(object):
|
|||||||
"one of (%s)" % (option, status, section, ", ".join(
|
"one of (%s)" % (option, status, section, ", ".join(
|
||||||
Implementation.STATUS_ALL)))
|
Implementation.STATUS_ALL)))
|
||||||
|
|
||||||
impl = Implementation(status)
|
option_notes = ''.join([DRIVER_NOTES_PREFIX,
|
||||||
|
option[len(DRIVER_PREFIX):]])
|
||||||
|
notes = None
|
||||||
|
if cfg.has_option(section, option_notes):
|
||||||
|
notes = cfg.get(section, option_notes)
|
||||||
|
|
||||||
|
impl = Implementation(status=status, notes=notes)
|
||||||
feature.implementations[option] = impl
|
feature.implementations[option] = impl
|
||||||
|
|
||||||
return feature
|
return feature
|
||||||
@@ -160,8 +166,9 @@ class Implementation(object):
|
|||||||
STATUS_ALL = [STATUS_COMPLETE, STATUS_MISSING,
|
STATUS_ALL = [STATUS_COMPLETE, STATUS_MISSING,
|
||||||
STATUS_PARTIAL, STATUS_UNKNOWN]
|
STATUS_PARTIAL, STATUS_UNKNOWN]
|
||||||
|
|
||||||
def __init__(self, status=STATUS_MISSING):
|
def __init__(self, status=STATUS_MISSING, notes=None):
|
||||||
self.status = status
|
self.status = status
|
||||||
|
self.notes = notes
|
||||||
|
|
||||||
|
|
||||||
STATUS_SYMBOLS = {
|
STATUS_SYMBOLS = {
|
||||||
@@ -375,6 +382,9 @@ class Directive(rst.Directive):
|
|||||||
ids=[key_id]),
|
ids=[key_id]),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
if impl.notes is not None:
|
||||||
|
subitem.append(self._create_notes_paragraph(impl.notes))
|
||||||
|
|
||||||
impls.append(subitem)
|
impls.append(subitem)
|
||||||
|
|
||||||
para_divers.append(impls)
|
para_divers.append(impls)
|
||||||
|
@@ -12,3 +12,4 @@ status=optional
|
|||||||
notes=A pretty darn cool feature.
|
notes=A pretty darn cool feature.
|
||||||
driver.foo=complete
|
driver.foo=complete
|
||||||
driver.bar=partial
|
driver.bar=partial
|
||||||
|
driver-notes.bar=Requires hardware support.
|
||||||
|
@@ -58,3 +58,13 @@ class MatrixTestCase(base.TestCase):
|
|||||||
fake_driver = self.matrix.drivers[key]
|
fake_driver = self.matrix.drivers[key]
|
||||||
self.assertEqual(title, fake_driver.title)
|
self.assertEqual(title, fake_driver.title)
|
||||||
self.assertEqual(link, fake_driver.link)
|
self.assertEqual(link, fake_driver.link)
|
||||||
|
|
||||||
|
@ddt.unpack
|
||||||
|
@ddt.data({'key': 'driver.foo', 'status': 'complete',
|
||||||
|
'notes': None},
|
||||||
|
{'key': 'driver.bar', 'status': 'partial',
|
||||||
|
'notes': 'Requires hardware support.'})
|
||||||
|
def test_implementations_set(self, key, status, notes):
|
||||||
|
fake_implementation = self.matrix.features[0].implementations[key]
|
||||||
|
self.assertEqual(status, fake_implementation.status)
|
||||||
|
self.assertEqual(notes, fake_implementation.notes)
|
||||||
|
Reference in New Issue
Block a user