'Generator that yields all values for given key in a recon cache entry.
This is for use with object auditor recon cache entries.  If the
object auditor has run in parallel, the recon cache will have entries
of the form:  {\'object_auditor_stats_ALL\': { \'disk1\': {..},
\'disk2\': {..},
\'disk3\': {..},
If the object auditor hasn\'t run in parallel, the recon cache will have
entries of the form:  {\'object_auditor_stats_ALL\': {...}}.
The ZBF auditor doesn\'t run in parallel.  However, if a subset of
devices is selected for auditing, the recon cache will have an entry
of the form:  {\'object_auditor_stats_ZBF\': { \'disk1disk2..diskN\': {}}
We use this generator to find all instances of a particular key in
these multi-level dictionaries.'

def nested_get_value(self, key, recon_entry):

    for (k, v) in recon_entry.items():
        if isinstance(v, dict):
            for value in self.nested_get_value(key, v):
                (yield value)
        if (k == key):
            (yield v)
