| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 | 
							- #!/usr/bin/python3
 
- # coding: utf-8
 
- # {{{ Imports
 
- import os
 
- import sys
 
- import argparse
 
- import yaml
 
- import json
 
- import traceback
 
- # }}}
 
- # {{{ Constants
 
- _NAME = "yaml2json"
 
- _DESC = "Convert yaml data to zabbix json discovery format"
 
- _VERSION = "0.1"
 
- # }}}
 
- # {{{ main
 
- def main():
 
-     parser = argparse.ArgumentParser(prog=_NAME, description=_DESC)
 
-     parser.add_argument('-v', '--version', action='version',
 
-                         version='%(prog)s ' + _VERSION)
 
-     parser.add_argument('-d', '--debug', dest='debug', default=False, action='store_true',
 
-                         help='Print additional debug informations: traceback, etc. (default: no)')
 
-     parser.add_argument('datafile')
 
-     options = parser.parse_args()
 
-     data = {'data': []}
 
-     if os.path.exists(options.datafile):
 
-         try:
 
-             with open(options.datafile) as f:
 
-                 datayml = yaml.safe_load(f)
 
-                 if datayml is not None:
 
-                     for section in datayml:
 
-                         localdata = {
 
-                             '{#KEY}': section,
 
-                         }
 
-                         for k in datayml[section]:
 
-                             localdata['{#%s}' % (k.upper())] = datayml[section][k]
 
-                         data['data'].append(localdata)
 
-         except Exception as e:
 
-             if not options.debug:
 
-                 print('Exception raised (use --debug option to get more info): %s' % (e), file=sys.stderr)
 
-             else:
 
-                 print('Exception raised: %s' % (e), file=sys.stderr)
 
-                 traceback.print_exc(file=sys.stderr)
 
-             print('ZBX_NOTSUPPORTED')
 
-             sys.exit(-1)
 
-     print(json.dumps(data, indent=4))
 
- # }}}
 
- # {{{ __main__
 
- if __name__ == "__main__":
 
-     main()
 
- # }}}
 
- # vim: foldmethod=marker foldlevel=0 foldenable
 
 
  |