Esempio n. 1
0
 def get_processable(self, agent_id, desc_domain, selector):
     if not format_check.is_valid_domain(desc_domain):
         return []
     if not format_check.is_valid_fullselector(selector):
         return []
     log.debug("GET_PROCESSABLE: %s:%s %s", desc_domain, selector, agent_id)
     return self.store.get_processable(str(desc_domain), str(selector))
Esempio n. 2
0
 def unlock(self, agent_id, lockid, desc_domain, selector,
            processing_failed, retries, wait_time):
     if not format_check.is_valid_domain(desc_domain):
         return
     if not format_check.is_valid_fullselector(selector):
         return
     objpath = self.clients[agent_id]
     locks = self.locks[desc_domain]
     lkey = (lockid, selector)
     log.debug("UNLOCK:%s %s(%s) => %r %d:%d ", lockid, objpath, agent_id,
               processing_failed, retries, wait_time)
     if lkey not in locks:
         return
     locks.remove(lkey)
     # find agent_name, config_txt
     for (agent_name, config_txt), ids in self.uniq_conf_clients.items():
         if agent_id in ids:
             break
     rkey = (agent_name, config_txt, desc_domain, selector)
     if rkey not in self.retry_counters:
         self.retry_counters[rkey] = retries
     if self.retry_counters[rkey] > 0:
         self.retry_counters[rkey] -= 1
         desc = self.store.get_descriptor(desc_domain, selector)
         uuid = desc.uuid
         self.sched.add_action(
             wait_time, (agent_id, desc_domain, uuid, selector, agent_name))
Esempio n. 3
0
 def get_children(self, agent_id, desc_domain, selector, recurse):
     log.debug("GET_CHILDREN: %s %s:%s", agent_id, desc_domain, selector)
     if not format_check.is_valid_domain(desc_domain):
         return []
     if not format_check.is_valid_fullselector(selector):
         return []
     descs = self.store.get_children(str(desc_domain),
                                     str(selector),
                                     recurse=bool(recurse))
     return [desc.serialize_meta(serializer) for desc in descs]
Esempio n. 4
0
    def request_processing(self, agent_id, desc_domain, selector, targets):
        log.debug("REQUEST_PROCESSING: %s %s:%s targets %s", agent_id,
                  desc_domain, selector, [str(t) for t in targets])
        if not format_check.is_valid_domain(desc_domain):
            return
        if not format_check.is_valid_fullselector(selector):
            return

        d = self.store.get_descriptor(str(desc_domain), str(selector))
        self.userrequestid += 1

        self.targeted_descriptor(agent_id, desc_domain, d.uuid, selector,
                                 targets, self.userrequestid)
Esempio n. 5
0
 def mark_processable(self, agent_id, desc_domain, selector):
     if not format_check.is_valid_domain(desc_domain):
         return
     if not format_check.is_valid_fullselector(selector):
         return
     agent_name = self.agentnames[agent_id]
     options = self.agents_output_altering_options[agent_id]
     log.debug("MARK_PROCESSABLE: %s:%s %s %s", desc_domain, selector,
               agent_id, options)
     isnew = self.store.mark_processable(str(desc_domain), str(selector),
                                         agent_name, str(options))
     if isnew:
         self._update_check_idle(agent_name, options)
Esempio n. 6
0
 def get_children(self, agent_id, desc_domain, selector, recurse):
     log.debug("GET_CHILDREN: %s %s:%s", agent_id, desc_domain, selector)
     if not self._check_agent_id(agent_id):
         return []
     if not format_check.is_valid_domain(desc_domain):
         return []
     if not format_check.is_valid_fullselector(selector):
         return []
     return list(
         self.store.get_children(str(desc_domain),
                                 str(selector),
                                 serializer=serializer,
                                 recurse=bool(recurse)))
Esempio n. 7
0
 def lock(self, agent_id, lockid, desc_domain, selector):
     if not format_check.is_valid_domain(desc_domain):
         return False
     if not format_check.is_valid_fullselector(selector):
         return False
     objpath = self.clients[agent_id]
     locks = self.locks[desc_domain]
     key = (lockid, selector)
     log.debug("LOCK:%s %s(%s) => %r %s:%s ", lockid, objpath, agent_id, key
               in locks, desc_domain, selector)
     if key in locks:
         return False
     locks.add(key)
     return True
Esempio n. 8
0
    def _pathFromSelector(self, domain, selector):
        """
        Returns full path, from domain and selector
        Checks selector & domain sanity (character whitelist)
        Returns None if parameters were invalid.
        """
        if not format_check.is_valid_fullselector(selector):
            log.error(
                "Provided selector (hex: %s) contains forbidden "
                "characters", selector.encode('hex'))
            return
        if not format_check.is_valid_domain(domain):
            log.error(
                "Provided domain (hex: %s) contains forbidden "
                "characters", domain.encode('hex'))
            return

        if '/%' not in selector:
            # no trailing '/' before the hash - add it
            selector = selector.replace('%', '/%')
        path = os.path.join(self.basepath, domain, selector[1:])
        return path