def disable(self, iden): rule = self._rules.get(iden) if rule is None: raise s_exc.NoSuchIden(iden=iden) rule.enabled = False self.view.core.trigstor.stor(iden, rule)
async def disable(self, iden): appt = self.appts.get(iden) if appt is None: raise s_exc.NoSuchIden() appt.enabled = False await self._storeAppt(appt)
async def delete(self, iden): ''' Delete an appointment ''' appt = self.appts.get(iden) if appt is None: raise s_exc.NoSuchIden() try: heappos = self.apptheap.index(appt) except ValueError: pass # this is OK, just a non-recurring appt that has no more records else: # If we're already the last item, just delete it if heappos == len(self.apptheap) - 1: del self.apptheap[heappos] else: # put the last item at the current position and reheap self.apptheap[heappos] = self.apptheap.pop() heapq.heapify(self.apptheap) del self.appts[iden] node = self._hivenode.get(iden) if node is not None: await node.hive.pop(node.full)
def disable(self, iden): rule = self._rules.get(iden) if rule is None: raise s_exc.NoSuchIden(iden=iden) rule.enabled = False self.core.slab.put(iden.encode(), rule.en(), db=self.trigdb)
async def get(self, iden): appt = self.appts.get(iden) if appt is not None: return appt mesg = f'No cron job with id: {iden}' raise s_exc.NoSuchIden(iden=iden, mesg=mesg)
def mod(self, iden, query): rule = self._rules.get(iden) if rule is None: raise s_exc.NoSuchIden() self.core.getStormQuery(query) rule.storm = query self.core.slab.put(iden, rule.en(), db=self.trigdb)
def mod(self, iden, query): rule = self._rules.get(iden) if rule is None: raise s_exc.NoSuchIden(iden=iden) self.view.core.getStormQuery(query) rule.storm = query self.view.core.trigstor.stor(iden, rule)
async def _libDmonDel(self, iden): dmon = await self.runt.snap.core.getStormDmon(iden) if dmon is None: mesg = f'No storm dmon with iden: {iden}' raise s_exc.NoSuchIden(mesg=mesg) if dmon.ddef.get('user') != self.runt.user.iden: self.runt.reqAllowed(('storm', 'dmon', 'del', iden)) await self.runt.snap.core.delStormDmon(iden)
async def move(self, croniden, viewiden): ''' Move a cronjob from one view to another ''' appt = self.appts.get(croniden) if appt is None: raise s_exc.NoSuchIden() appt.view = viewiden await self._storeAppt(appt)
async def updateCronJob(self, iden, query): ''' Change an existing cron job's query Args: iden (bytes): The iden of the cron job to be changed ''' cron = self.cell.agenda.appts.get(iden) if cron is None: raise s_exc.NoSuchIden() self._auth_check(cron.username) await self.cell.agenda.mod(iden, query)
async def delCronJob(self, iden): ''' Delete a cron job Args: iden (bytes): The iden of the cron job to be deleted ''' cron = self.cell.agenda.appts.get(iden) if cron is None: raise s_exc.NoSuchIden() self._auth_check(cron.username) await self.cell.agenda.delete(iden)
async def dyncall(self, iden, todo, gatekeys=()): for useriden, perm, gateiden in gatekeys: (await self.auth.reqUser(useriden)).confirm(perm, gateiden=gateiden) item = self.dynitems.get(iden) if item is None: raise s_exc.NoSuchIden(mesg=iden) name, args, kwargs = todo meth = getattr(item, name) return await s_coro.ornot(meth, *args, **kwargs)
async def setNodeProp(self, iden, name, valu): buid = s_common.uhex(iden) async with await self.cell.snap(user=self.user) as snap: node = await snap.getNodeByBuid(buid) if node is None: raise s_exc.NoSuchIden(iden=iden) prop = node.form.props.get(name) self._reqUserAllowed('prop:set', prop.full) await node.set(name, valu) return node.pack()
async def mod(self, iden, query): ''' Change the query of an appointment ''' appt = self.appts.get(iden) if appt is None: raise s_exc.NoSuchIden() if not query: raise ValueError('empty query') if self.enabled: await self.core.getStormQuery(query) appt.query = query appt.enabled = True # in case it was disabled for a bad query await self._storeAppt(appt)
async def getInput(self): for node in self.inputs: yield node, self.initPath(node) for ndef in self.opts.get('ndefs', ()): node = await self.snap.getNodeByNdef(ndef) if node is not None: yield node, self.initPath(node) for iden in self.opts.get('idens', ()): buid = s_common.uhex(iden) if len(buid) != 32: raise s_exc.NoSuchIden(mesg='Iden must be 32 bytes', iden=iden) node = await self.snap.getNodeByBuid(buid) if node is not None: yield node, self.initPath(node)
async def delNodeTag(self, iden, tag): ''' Delete a tag from the node specified by iden. Args: iden (str): A hex encoded node BUID. tag (str): A tag string. ''' buid = s_common.uhex(iden) parts = tag.split('.') self._reqUserAllowed('tag:del', *parts) async with await self.cell.snap(user=self.user) as snap: node = await snap.getNodeByBuid(buid) if node is None: raise s_exc.NoSuchIden(iden=iden) await node.delTag(tag) return node.pack()
async def addNodeTag(self, iden, tag, valu=(None, None)): ''' Add a tag to a node specified by iden. Args: iden (str): A hex encoded node BUID. tag (str): A tag string. valu (tuple): A time interval tuple or (None, None). ''' buid = s_common.uhex(iden) parts = tag.split('.') self._reqUserAllowed('tag:add', *parts) async with await self.cell.snap(user=self.user) as snap: node = await snap.getNodeByBuid(buid) if node is None: raise s_exc.NoSuchIden(iden=iden) await node.addTag(tag, valu=valu) return node.pack()
def delete(self, iden): rule = self._rules.pop(iden, None) if rule is None: raise s_exc.NoSuchIden() self.core.slab.delete(iden, db=self.trigdb) if rule.cond == 'node:add': self.nodeadd[rule.form].remove(rule) return if rule.cond == 'node:del': self.nodedel[rule.form].remove(rule) return if rule.cond == 'prop:set': self.propset[rule.prop].remove(rule) return if rule.cond == 'tag:add': if '*' not in rule.tag: self.tagadd[(rule.form, rule.tag)].remove(rule) return globs = self.tagaddglobs.get(rule.form) globs.rem(rule.tag, rule) return if rule.cond == 'tag:del': if '*' not in rule.tag: self.tagdel[(rule.form, rule.tag)].remove(rule) return globs = self.tagdelglobs.get(rule.form) globs.rem(rule.tag, rule) return
async def setTriggerInfo(self, iden, name, valu): trig = self.triggers.get(iden) if trig is None: raise s_exc.NoSuchIden("Trigger not found") await trig.set(name, valu)
async def delTrigger(self, iden): trig = self.triggers.get(iden) if trig is None: raise s_exc.NoSuchIden("Trigger not found") return await self._push('trigger:del', iden)
async def getTrigger(self, iden): trig = self.triggers.get(iden) if trig is None: raise s_exc.NoSuchIden("Trigger not found") return trig
async def enable(self, iden): appt = self.appts.get(iden) if appt is None: raise s_exc.NoSuchIden() await self.mod(iden, appt.query)
async def get(self, iden): rule = self._rules.get(iden) if rule is None: raise s_exc.NoSuchIden(iden=iden) return rule
def get(self, iden): trig = self.triggers.get(iden) if trig is None: mesg = f'No trigger with iden {iden}' raise s_exc.NoSuchIden(iden=iden, mesg=mesg) return trig
async def boomgenr(): yield s_common.todo('bar', 10, 30) raise s_exc.NoSuchIden()
def get(self, iden): rule = self._rules.get(iden) if rule is None: raise s_exc.NoSuchIden() return dataclasses.asdict(rule)