import monasca_setup.detection


class Neutron(monasca_setup.detection.ServicePlugin):

    """Detect Neutron daemons and setup configuration to monitor them.

    """

    def __init__(self, template_dir, overwrite=True, args=None):
        service_params = {
            'args': args,
            'template_dir': template_dir,
            'overwrite': overwrite,
            'service_name': 'networking',
            'process_names': ['neutron-server', 'neutron-openvswitch-agent',
                              'neutron-rootwrap', 'neutron-dhcp-agent',
                              'neutron-vpn-agent', 'neutron-metadata-agent',
                              'neutron-metering-agent', 'neutron-l3-agent',
                              'neutron-ns-metadata-proxy',
                              '/opt/stack/service/neutron/venv/bin/neutron-lbaas-agent',
                              '/opt/stack/service/neutron/venv/bin/neutron-lbaasv2-agent',
                              'neutron-l2gateway-agent'],
            'service_api_url': 'http://localhost:9696',
            'search_pattern': '.*v2.0.*'
        }

        super(Neutron, self).__init__(service_params)

    def build_config(self):
        """Build the config as a Plugins object and return."""
        # Skip the http check if neutron-server is not on this box
        if 'neutron-server' not in self.found_processes:
            self.service_api_url = None
            self.search_pattern = None

        return monasca_setup.detection.ServicePlugin.build_config(self)

import monasca_setup.detection


class Neutron(monasca_setup.detection.ServicePlugin):

    """Detect Neutron daemons and setup configuration to monitor them.

    """

    def __init__(self, template_dir, overwrite=True, args=None):
        service_params = {
            'args': args,
            'template_dir': template_dir,
            'overwrite': overwrite,
            'service_name': 'networking',
            'process_names': ['neutron-server', 'neutron-openvswitch-agent',
                              'neutron-rootwrap', 'neutron-dhcp-agent',
                              'neutron-vpn-agent', 'neutron-metadata-agent',
                              'neutron-metering-agent', 'neutron-l3-agent',
                              'neutron-ns-metadata-proxy',
                              'bin/neutron-lbaas-agent',
                              'neutron-lbaasv2-agent',
                              'neutron-l2gateway-agent'],
            'service_api_url': 'http://localhost:9696',
            'search_pattern': '.*v2.0.*'
        }

        super(Neutron, self).__init__(service_params)

    def build_config(self):
        """Build the config as a Plugins object and return."""
        # Skip the http check if neutron-server is not on this box
        if 'neutron-server' not in self.found_processes:
            self.service_api_url = None
            self.search_pattern = None

        return monasca_setup.detection.ServicePlugin.build_config(self)

Remove vendor-specific paths on LBaaS agent executables
Remove vendor-specific paths on LBaaS agent executables

The monasca agent uses simple string matching in the process detection
plugin.  This can result in false positive matches in the case where a
process name appears elsehwere in the "ps" output.  In particular,
"neutron-lbaas-agent" is used for both process and log file names.

The initial attempt at solving this used full path names for the LBaaS
agents, but these paths were only valid for specific vendor distributions.
This patch reverts to using only "neutron-lbaasv2-agent" for the V2
LBaaS agent, and uses "bin/neutron-lbaas-agent" for the V1 agent.

While it is possible that a vendor would deliver the neutron-lbaas-agent
in a directory other than "bin", they would be diverging from the
layout generally assumed by the overall neutron project.

Change-Id: I6654d99ea060e26b7cdd5b0bdb1a1c0a2537ba3b
