@classmethod
    def get_components_metadata(cls, release):
        components = []
        seen_components = \
            dict((c['name'], 'release') for c in release.components_metadata)

        for plugin_adapter in map(
                wrap_plugin, PluginCollection.get_by_release(release)):
            plugin_name = plugin_adapter.name
            for component in plugin_adapter.components_metadata:
                name = component['name']
                if seen_components.get(name, plugin_name) != plugin_name:
                    raise errors.AlreadyExists(
                        'Plugin {0} is overlapping with {1} by introducing '
                        'the same component with name "{2}"'
                        .format(plugin_adapter.name,
                                seen_components[name],
                                name))

                if name not in seen_components:
                    seen_components[name] = plugin_adapter.name
                    components.append(component)

        return components
Get components metadata for all plugins which related to release.
dataset/ETHPy150Open openstack/fuel-web/nailgun/nailgun/plugins/manager.py/PluginManager.get_components_metadata