#!/usr/bin/env python2.7
############################################################################
##
## Copyright (c) 2000-2015 BalaBit IT Ltd, Budapest, Hungary
## Copyright (c) 2015-2018 BalaSys IT Ltd, Budapest, Hungary
##
##
## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
## the Free Software Foundation; either version 2 of the License, or
## (at your option) any later version.
##
## This program is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
## GNU General Public License for more details.
##
## You should have received a copy of the GNU General Public License along
## with this program; if not, write to the Free Software Foundation, Inc.,
## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
##
############################################################################
#
#%# family=auto
#%# capabilities=autoconf

try:
    from zorpctl import Instances
    have_zorpctl = True
except ImportError:
    have_zorpctl = False

import subprocess
import sys

def print_config():
    print 'graph_title Zorp threads'
    print 'graph_args --base 1000'
    print 'graph_vlabel threads'
    print 'graph_category Zorp'

    for process_status in Instances.ZorpHandler.status():
        if process_status.threads > 0:
            print process_status.name + ".label " + process_status.name


def print_values():
    for process_status in Instances.ZorpHandler.status():
        if process_status.threads > 0:
            print process_status.name + ".value " + str(process_status.threads)

def detect_zorp():
    if not have_zorpctl:
        return "No zorpctl library found"
    try:
        zorpctl_status = subprocess.call("zorpctl --status")
        if zorpctl_status != 0:
            return "zorpctl return with an error"
    except OSError:
            return "No zorpctl found"
    return ""


if __name__ == '__main__':
    if len(sys.argv) > 1 and sys.argv[1] == 'autoconf':
        excuse = detect_zorp()
        if excuse == "":
            print("yes")
        else:
            print("no ({})".format(excuse))
    elif have_zorpctl:
        if len(sys.argv) > 1 and sys.argv[1] == 'config':
            print_config()
        else:
            print_values()
    else:
        print("No zoprctl found, the plugin cannot be run")
        sys.exit(1)
