'Loads service plugins.
Starts from the core plugin and checks if it supports
advanced services then loads classes provided in configuration.'

def _load_service_plugins(self):

    plugin_providers = cfg.CONF.service_plugins
    plugin_providers.extend(self._get_default_service_plugins())
    LOG.debug('Loading    service    plugins:    %s', plugin_providers)
    for provider in plugin_providers:
        if (provider == ''):
            continue
        LOG.info(_LI('Loading    Plugin:    %s'), provider)
        plugin_inst = self._get_plugin_instance('neutron.service_plugins', provider)
        plugin_type = plugin_inst.get_plugin_type()
        if directory.get_plugin(plugin_type):
            raise ValueError((_('Multiple    plugins    for    service    %s    were    configured') % plugin_type))
        directory.add_plugin(plugin_type, plugin_inst)
        plugin = directory.get_plugin()
        if (hasattr(plugin, 'agent_notifiers') and hasattr(plugin_inst, 'agent_notifiers')):
            plugin.agent_notifiers.update(plugin_inst.agent_notifiers)
        LOG.debug('Successfully    loaded    %(type)s    plugin.    Description:    %(desc)s', {'type': plugin_type, 'desc': plugin_inst.get_plugin_description()})
