Esempio n. 1
0
 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
Esempio n. 2
0
 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
Esempio n. 3
0
 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
Esempio n. 4
0
 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
Esempio n. 5
0
 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)
     ]
Esempio n. 6
0
 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
Esempio n. 7
0
 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}