def set_rule_props(self, **kwargs): i, rw, ra, save = pa.parse_api_params(kwargs, 'iwaS', 'S..b') rule_id = i.rsplit('/')[-1] if rw: result = pa.api_call('management_api_call', i=flags.lm, f='set_rule_prop', p={ 'i': f'{rule_id}_w', 'v': rw, 'save': save }) if result['code'] != apiclient.result_ok: raise pa.FunctionFailed( f'unable to set warning rule props {rule_id}_w at ' f'{flags.lm} ({result["code"]})') if ra: result = pa.api_call('management_api_call', i=flags.lm, f='set_rule_prop', p={ 'i': f'{rule_id}_a', 'v': ra, 'save': save }) if result['code'] != apiclient.result_ok: raise pa.FunctionFailed( f'unable to set alarm rule props {rule_id}_a at ' f'{flags.lm} ({result["code"]})') return True
def set_description(self, **kwargs): i, d, save = pa.parse_api_params(kwargs, 'idS', 'Ssb') lvar_id = f'lvar:alarmer/{i}' rule_id = i.rsplit('/')[-1] result = pa.api_call('management_api_call', i=flags.lm, f='set_prop', p={ 'i': lvar_id, 'p': 'description', 'v': d, 'save': save }) if result['code'] != apiclient.result_ok: raise pa.FunctionFailed( f'unable to set lvar description {lvar_id} at ' f'{flags.lm} ({result["code"]})') for rtp in ['w', 'a']: result = pa.api_call('management_api_call', i=flags.lm, f='set_rule_prop', p={ 'i': f'{rule_id}_{rtp}', 'p': 'description', 'v': d, 'save': save }) if result['code'] != apiclient.result_ok: raise pa.FunctionFailed( f'unable to set rule description {rule_id}_{rtp} at ' f'{flags.lm} ({result["code"]})') pa.api_call('reload_controller', i=flags.lm) return True
def list_rule_props(self, **kwargs): i = pa.parse_api_params(kwargs, 'i', 'S') rules = {} rule_id = i.rsplit('/')[-1] for rtp in ['w', 'a']: result = pa.api_call('management_api_call', i=flags.lm, f='list_rule_props', p={ 'i': f'{rule_id}_{rtp}', }) if result['code'] != apiclient.result_ok: raise pa.FunctionFailed( f'unable to list rule props {rule_id}_{rtp} at ' f'{flags.lm} ({result["code"]})') d = result['data'] for x in [ 'enabled', 'macro', 'macro_args', 'macro_kwargs', 'priority' ]: try: del d[x] except KeyError: pass rules['r' + rtp] = d return rules
def subscribe(self, **kwargs): k, i, l = pa.parse_function_params(kwargs, 'kil', 'SSI') lvar = pa.get_item(f'lvar:alarmer/{i}') if l < 1 or l > 2: raise pa.InvalidParameter('param "l" should be 1 or 2') if not lvar: raise pa.ResourceNotFound if not pa.key_check(k, lvar, ro_op=True): raise pa.AccessDenied db = get_db() u = pa.get_aci('u') if not u: raise pa.FunctionFailed('user is not logged in') utp = pa.get_aci('utp') if not utp: utp = '' kw = {'u': u, 'utp': utp, 'alarm_id': i, 'level': l} if db.execute( sql('select alarm_id from alarmer_sub where u=:u ' 'and utp=:utp and alarm_id=:alarm_id'), **kw).fetchone(): db.execute( sql('update alarmer_sub set level=:level ' 'where u=:u and utp=:utp and alarm_id=:alarm_id'), **kw) else: db.execute( sql('insert into alarmer_sub(u, utp, alarm_id, level) ' 'values (:u, :utp, :alarm_id, :level)'), **kw) return True
def list_subscriptions(self, **kwargs): u = pa.get_aci('u') if not u: raise pa.FunctionFailed('user is not logged in') utp = pa.get_aci('utp') if not utp: utp = '' kw = {'u': u, 'utp': utp} db = get_db() return [ dict(x) for x in db.execute( sql('select alarm_id, level ' 'from alarmer_sub where u=:u and utp=:utp'), **kw) ]
def unsubscribe(self, **kwargs): k, i = pa.parse_function_params(kwargs, 'ki', 'SS') lvar = pa.get_item(f'lvar:alarmer/{i}') if not lvar: raise pa.ResourceNotFound if not pa.key_check(k, lvar, ro_op=True): raise pa.AccessDenied db = get_db() u = pa.get_aci('u') if not u: raise pa.FunctionFailed('user is not logged in') utp = pa.get_aci('utp') if not utp: utp = '' kw = {'u': u, 'utp': utp, 'alarm_id': i} db.execute( sql('delete from alarmer_sub where u=:u ' 'and utp=:utp and alarm_id=:alarm_id'), **kw) return True
def create(self, **kwargs): u, d, g, rw, ra, save = pa.parse_api_params(kwargs, 'udgwaS', 'sssRRb') import uuid alarm_id = u if u else str(uuid.uuid4()) alarm_full_id = f'{g if g else ""}{"/" if g else ""}{alarm_id}' lvar_id = f'alarmer{"/" if g else ""}{g if g else ""}/{alarm_id}' try: result = pa.api_call('management_api_call', i=flags.lm, f='create_lvar', p={ 'i': lvar_id, 'save': save and not d }) if result['code'] != apiclient.result_ok: raise pa.FunctionFailed(f'unable to create lvar {lvar_id} at' f' {flags.lm} ({result["code"]})') if d: result = pa.api_call('management_api_call', i=flags.lm, f='set_prop', p={ 'i': lvar_id, 'p': 'description', 'v': d, 'save': save }) if result['code'] != apiclient.result_ok: raise pa.FunctionFailed( f'unable to set lvar description {lvar_id} at ' f'{flags.lm} ({result["code"]})') result = pa.api_call('management_api_call', i=flags.lm, f='create_rule', p={ 'u': f'{alarm_id}_w', 'v': rw }) if result['code'] != apiclient.result_ok: raise pa.FunctionFailed( f'unable to create warning rule {alarm_id}w at ' f'{flags.lm} ({result["code"]})') result = pa.api_call('management_api_call', i=flags.lm, f='set_rule_prop', p={ 'i': f'{alarm_id}_w', 'v': { 'description': d, 'macro': '@x_alarmer_notify', 'macro_args': [alarm_full_id, 1], 'priority': 1, 'enabled': True }, 'save': save }) if result['code'] != apiclient.result_ok: raise pa.FunctionFailed( f'unable to set warning rule {alarm_id}_w props ' f'at {flags.lm} ({result["code"]})') result = pa.api_call('management_api_call', i=flags.lm, f='create_rule', p={ 'u': f'{alarm_id}_a', 'v': ra }) if result['code'] != apiclient.result_ok: raise pa.FunctionFailed( f'unable to create alarm rule {alarm_id}w at ' f'{flags.lm} ({result["code"]})') result = pa.api_call('management_api_call', i=flags.lm, f='set_rule_prop', p={ 'i': f'{alarm_id}_a', 'v': { 'description': d, 'macro': '@x_alarmer_notify', 'macro_args': [alarm_full_id, 2], 'priority': 1, 'enabled': True }, 'save': save }) if result['code'] != apiclient.result_ok: raise pa.FunctionFailed( f'unable to set alarm rule {alarm_id}_a props ' f'at {flags.lm} ({result["code"]})') pa.api_call('reload_controller', i=flags.lm) except: pa.log_traceback() destroy_alarm(f'{g if g else ""}{"/" if g else ""}{alarm_id}') raise return {'id': alarm_full_id, 'lvar_id': lvar_id}