Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python3
- import argparse
- import subprocess
- from pathlib import Path
- import yaml
- COMMAND_LIST = ['start', 'status', 'stop']
- def read_config():
- config_path = Path.home() / '.dashboard_config.yml'
- if config_path.exists():
- with config_path.open() as stream:
- config = yaml.load(stream, Loader=yaml.FullLoader)
- return config
- else:
- print(f"Please create {config_path} first!")
- def db_run(args, config):
- command = [
- config['postgres']['cmd']['ctl'],
- '-D', config['postgres']['data'],
- args.cmd
- ]
- subprocess.call(command)
- def kafka_run(args, config):
- command = [
- config['confluent']['cmd']['ctl'], 'local', args.cmd
- ]
- subprocess.call(command)
- def supervisor_run(args, config):
- options = args.options
- if len(options) == 0:
- options.append('status')
- command = [
- config['supervisor']['cmd']['ctl'],
- '-c', config['supervisor']['conf'],
- *options
- ]
- subprocess.call(command)
- def view_log(args, config):
- service_name = args.name
- ext = 'err' if args.view_error else 'log'
- log_path = Path(config['supervisor']['log']) / f'{service_name}.{ext}'
- if log_path.exists():
- subprocess.call(['cat', log_path])
- else:
- print(f'{log_path} does NOT exist!')
- def main():
- config = read_config()
- parser = argparse.ArgumentParser()
- subparsers = parser.add_subparsers(dest='command', help='sub-command help')
- db_parser = subparsers.add_parser('db', help='db sub-commands')
- kafka_parser = subparsers.add_parser('kafka', help='kafka sub-commands')
- srv_parser = subparsers.add_parser('service', help='service sub-commands')
- log_parser = subparsers.add_parser('log', help='view logs')
- db_parser.add_argument('cmd', choices=COMMAND_LIST)
- db_parser.set_defaults(func=db_run)
- kafka_parser.add_argument('cmd', choices=COMMAND_LIST)
- kafka_parser.set_defaults(func=kafka_run)
- srv_parser.add_argument('options', nargs=argparse.REMAINDER)
- srv_parser.set_defaults(func=supervisor_run)
- log_parser.add_argument('-e', '--view_error', action='store_true',
- help='view errors')
- log_parser.add_argument('name', help='service name')
- log_parser.set_defaults(func=view_log)
- args = parser.parse_args()
- args.func(args, config)
- if __name__ == '__main__':
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement