From cd5305b33220f8d790b008802e7e9843645fc37a Mon Sep 17 00:00:00 2001 From: nolash Date: Tue, 6 Apr 2021 21:29:12 +0200 Subject: [PATCH] Add send cli --- apps/cic-notify/cic_notify/runnable/send.py | 76 +++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 apps/cic-notify/cic_notify/runnable/send.py diff --git a/apps/cic-notify/cic_notify/runnable/send.py b/apps/cic-notify/cic_notify/runnable/send.py new file mode 100644 index 00000000..5126736e --- /dev/null +++ b/apps/cic-notify/cic_notify/runnable/send.py @@ -0,0 +1,76 @@ +# standard imports +import sys +import os +import logging +import argparse +import tempfile + +# external imports +import celery +import confini + +# local imports +from cic_notify.api import Api + +logging.basicConfig(level=logging.WARNING) +logg = logging.getLogger() + +config_dir = os.path.join('/usr/local/etc/cic-notify') + +argparser = argparse.ArgumentParser() +argparser.add_argument('-c', type=str, default=config_dir, help='config file') +argparser.add_argument('--env-prefix', default=os.environ.get('CONFINI_ENV_PREFIX'), dest='env_prefix', type=str, help='environment prefix for variables to overwrite configuration') +argparser.add_argument('-v', action='store_true', help='be verbose') +argparser.add_argument('-vv', action='store_true', help='be more verbose') +argparser.add_argument('recipient', type=str, help='notification recipient') +argparser.add_argument('message', type=str, help='message text') +args = argparser.parse_args() + +if args.vv: + logging.getLogger().setLevel(logging.DEBUG) +elif args.v: + logging.getLogger().setLevel(logging.INFO) + +config = confini.Config(args.c, args.env_prefix) +config.process() +config.censor('PASSWORD', 'DATABASE') +config.add(args.recipient, '_RECIPIENT', True) +config.add(args.message, '_MESSAGE', True) + +# set up celery +app = celery.Celery(__name__) + +broker = config.get('CELERY_BROKER_URL') +if broker[:4] == 'file': + bq = tempfile.mkdtemp() + bp = tempfile.mkdtemp() + app.conf.update({ + 'broker_url': broker, + 'broker_transport_options': { + 'data_folder_in': bq, + 'data_folder_out': bq, + 'data_folder_processed': bp, + }, + }, + ) + logg.warning('celery broker dirs queue i/o {} processed {}, will NOT be deleted on shutdown'.format(bq, bp)) +else: + app.conf.update({ + 'broker_url': broker, + }) + +result = config.get('CELERY_RESULT_URL') +if result[:4] == 'file': + rq = tempfile.mkdtemp() + app.conf.update({ + 'result_backend': 'file://{}'.format(rq), + }) + logg.warning('celery backend store dir {} created, will NOT be deleted on shutdown'.format(rq)) +else: + app.conf.update({ + 'result_backend': result, + }) + +if __name__ == '__main__': + a = Api() + t = a.sms(config.get('_RECIPIENT'), config.get('_MESSAGE'))