diff --git a/monasca_setup/README.md b/monasca_setup/README.md index 42d0998d..3bea7c4d 100644 --- a/monasca_setup/README.md +++ b/monasca_setup/README.md @@ -5,11 +5,5 @@ configuring it to start up on boot. ## Future Considerations -- A good system for specifying active style checks for configuration would be great. Active style checks are those - which run locally but are checking a remote box. -- The ability to dynamically add detection plugins could be quite valuable. Also it could aid in the active check config. - - With the ability to dynamically add I should also include the ability to dynamically remove. - A config file with metadata to assist in automatic configuration could be quite valuable, for example user/pass for logging into mysql. -- The current system does not work well in the case of clusters, for example the kafka plugin will end up collecting - the same data on each node of a cluster. \ No newline at end of file diff --git a/monasca_setup/detection/plugins/host_alive.py b/monasca_setup/detection/plugins/host_alive.py index 09a75767..7eed42cc 100644 --- a/monasca_setup/detection/plugins/host_alive.py +++ b/monasca_setup/detection/plugins/host_alive.py @@ -9,26 +9,34 @@ log = logging.getLogger(__name__) class HostAlive(monasca_setup.detection.ArgsPlugin): """ Setup an host_alive check according to the passed in args. Despite being a detection plugin this plugin does no detection and will be a noop without arguments. - Expects two space seperated arguments hostname and type. Type can be either 'ssh' or 'ping'. For example: + Expects two space seperated arguments hostname and type. Type can be either 'ssh' or 'ping'. hostname + can be a comma seperated list of hosts. + Examples: 'monasca-setup -d hostalive -a "hostname=remotebox type=ping"' + 'monasca-setup -d hostalive -a "hostname=remotebox,remotebox2 type=ssh"' """ def _detect(self): """Run detection, set self.available True if the service is detected. """ self.available = self._check_required_args(['hostname', 'type']) + # Ideally the arg would be called hostnames but leaving it hostname to avoid breaking backward compatibility def build_config(self): """Build the config as a Plugins object and return. """ config = monasca_setup.agent_config.Plugins() log.info("\tEnabling {type} host check for {hostname}".format(**self.args)) - # Since the naming in the args and in the config don't match build_instance is only good for dimensions - instance = self._build_instance([]) - instance.update({'name': "{hostname} {type}".format(**self.args), - 'host_name': self.args['hostname'], - 'alive_test': self.args['type']}) - config['host_alive'] = {'init_config': None, 'instances': [instance]} + instances = [] + for hostname in self.args['hostname'].split(','): + # Since the naming in the args and in the config don't match build_instance is only good for dimensions + instance = self._build_instance([]) + instance.update({'name': "{0} {1}".format(hostname, self.args['type']), + 'host_name': hostname, + 'alive_test': self.args['type']}) + instances.append(instance) + + config['host_alive'] = {'init_config': None, 'instances': instances} return config