+def _iter_scenario_classes(scenario_type=None):
+ """Generator over all 'Scenario' subclasses
+
+ This function will iterate over all 'Scenario' subclasses defined in this
+ project and will load any class introduced by any installed plugin project,
+ defined in 'entry_points' section, under 'yardstick.scenarios' subsection.
+ """
+ extension.ExtensionManager(namespace='yardstick.scenarios',
+ invoke_on_load=False)
+ for scenario in utils.itersubclasses(Scenario):
+ if not scenario_type:
+ yield scenario
+ elif getattr(scenario, '__scenario_type__', None) == scenario_type:
+ yield scenario
+
+
+@six.add_metaclass(abc.ABCMeta)