def _send_stats(self, plugin):
        """
        :param plugin: plugin file
        """
        points = []

        try:
            stats_file = "/tmp/{}.stats".format(basename(plugin))
            with open(stats_file, "w+") as output:
                subprocess.call(plugin, stdout=output)

            with open(stats_file, "r") as output:
                points = json.loads(output.read())

        except ValueError as ex:
            self._print_message("{0} error: {1}".format(basename(plugin), ex.message))
        except Exception as ex:
            self._print_message(ex.message)

        new_points = []
        for point in points:
            if point is not None:
                point['tags']['group'] = self.config['group']
                new_points.append(point)

        if len(new_points) == 0:
            self._print_message("No statistics found.")
            return

        transport = self.config['transport']
        host = self.config['host']
        port = self.config['port']
        password = self.config['password']
        database = self.config['database']

        if transport == 'influxdb':
            try:
                user = self.config['user']
                client = InfluxDBClient(host, port, user, password, database)
                client.write_points(new_points)
            except InfluxDBClientError as ex:
                self._print_message(ex.message)
            except InfluxDBServerError as ex:
                self._print_message(ex.message)
            except Exception as ex:
                self._print_message(ex.message)
        elif transport == 'redis':
            try:
                client = redis.Redis(host=host, port=port, password=password)
                client.lpush(database, points)
            except RedisError as ex:
                self._print_message(ex.message)
            except Exception as ex:
                self._print_message(ex.message)
        else:
            self._print_message("transport {0} not supported.".format(transport))
    def _send_stats(points):

        db_key = '/ops/db'
        if not EtcdConfiguration.exists(db_key):
            StatsmonkeyScheduledTaskController._logger.error('{} config not found'.format(db_key))
            return

        db_config = EtcdConfiguration.get(db_key)

        transport = db_config.get('transport')
        host = db_config.get('host')
        port = db_config.get('port')
        password = db_config.get('password')
        database = db_config.get('database')

        if transport == 'influxdb':
            try:
                user = db_config.get('username')
                client = InfluxDBClient(host=host, port=port, username=user, password=password, database=database)
                StatsmonkeyScheduledTaskController._logger.info(points)
                client.write_points(points)
            except InfluxDBClientError as c:
                StatsmonkeyScheduledTaskController._logger.error(c.message)
            except InfluxDBServerError as s:
                StatsmonkeyScheduledTaskController._logger.error(s.message)
            except Exception as ex:
                StatsmonkeyScheduledTaskController._logger.error(ex.message)
        elif transport == 'redis':
            try:
                client = redis.Redis(host=host, port=port, password=password)
                StatsmonkeyScheduledTaskController._logger.info(points)
                client.lpush(database, points)
            except RedisError as ex:
                StatsmonkeyScheduledTaskController._logger.error(ex.message)
            except Exception as ex:
                StatsmonkeyScheduledTaskController._logger.error(ex.message)
        else:
            StatsmonkeyScheduledTaskController._logger.error("transport {0} not supported.".format(transport))