예제 #1
0
    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)
예제 #2
0
    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)
예제 #3
0
    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)
예제 #4
0
파일: trigger.py 프로젝트: neelsenc/synapse
    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)
예제 #5
0
    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)
예제 #6
0
    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)
예제 #7
0
    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)
예제 #8
0
    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)
예제 #9
0
    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)
예제 #10
0
파일: cortex.py 프로젝트: rjammala/synapse
    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)
예제 #11
0
파일: cortex.py 프로젝트: rjammala/synapse
    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)
예제 #12
0
    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)
예제 #13
0
파일: cortex.py 프로젝트: rjammala/synapse
    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()
예제 #14
0
    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)
예제 #15
0
    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)
예제 #16
0
파일: cortex.py 프로젝트: rjammala/synapse
    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()
예제 #17
0
파일: cortex.py 프로젝트: rjammala/synapse
    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()
예제 #18
0
    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
예제 #19
0
 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)
예제 #20
0
    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)
예제 #21
0
    async def getTrigger(self, iden):
        trig = self.triggers.get(iden)
        if trig is None:
            raise s_exc.NoSuchIden("Trigger not found")

        return trig
예제 #22
0
    async def enable(self, iden):
        appt = self.appts.get(iden)
        if appt is None:
            raise s_exc.NoSuchIden()

        await self.mod(iden, appt.query)
예제 #23
0
 async def get(self, iden):
     rule = self._rules.get(iden)
     if rule is None:
         raise s_exc.NoSuchIden(iden=iden)
     return rule
예제 #24
0
 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
예제 #25
0
 async def boomgenr():
     yield s_common.todo('bar', 10, 30)
     raise s_exc.NoSuchIden()
예제 #26
0
 def get(self, iden):
     rule = self._rules.get(iden)
     if rule is None:
         raise s_exc.NoSuchIden()
     return dataclasses.asdict(rule)