예제 #1
0
 def _set_stopping_conditions(conditions):
     if conditions:
         return [
             Fact.load(dict(trait=trait, value=value)) for sc in conditions
             for trait, value in sc.items()
         ]
     return []
예제 #2
0
 async def update_planner(self, data):
     planner = (await self.get_service('data_svc').locate('planners', dict(name=data['name'])))[0]
     planner_id = planner.planner_id
     file_path = await self._get_file_path(planner_id)
     planner_dict = await self._read_from_yaml(file_path)
     planner_dict['stopping_conditions'] = self._get_stopping_conditions(data)
     await self._write_to_yaml(file_path, planner_dict)
     planner.stopping_conditions = [Fact.load(dict(trait=f.get('trait'), value=f.get('value')))
                                    for f in data['stopping_conditions']]
     await self.get_service('data_svc').store(planner)
예제 #3
0
 async def add_facts(self, request: web.Request):
     knowledge_svc_handle = self._api_manager.knowledge_svc
     fact_data = await self._api_manager.extract_data(request)
     if fact_data:
         try:
             new_fact = Fact.load(fact_data)
             if 'source' not in fact_data:
                 new_fact.source = WILDCARD_STRING
             new_fact.source_type = OriginType.USER.name
             await knowledge_svc_handle.add_fact(new_fact)
             store = await knowledge_svc_handle.get_facts(criteria=dict(trait=fact_data['trait'],
                                                                        value=fact_data['value'],
                                                                        source=WILDCARD_STRING,
                                                                        source_type=OriginType.USER.name))
             resp = await self._api_manager.verify_fact_integrity(store)
             return web.json_response(dict(added=resp))
         except Exception as e:
             self.log.warning(f'Encountered issue saving fact {fact_data} - {e}')
예제 #4
0
 async def add_facts(self, request: web.Request):
     knowledge_svc_handle = self._api_manager.knowledge_svc
     fact_data = await self._api_manager.extract_data(request)
     try:
         new_fact = Fact.load(fact_data)
         if 'source' not in fact_data:
             new_fact.source = WILDCARD_STRING
         new_fact.origin_type = OriginType.USER
         await self._api_manager.verify_operation_state(new_fact)
         await knowledge_svc_handle.add_fact(new_fact)
         store = await knowledge_svc_handle.get_facts(criteria=dict(trait=new_fact.trait,
                                                                    value=new_fact.value,
                                                                    source=new_fact.source,
                                                                    origin_type=OriginType.USER))
         resp = await self._api_manager.verify_fact_integrity(store)
         return web.json_response(dict(added=resp))
     except Exception as e:
         error_msg = f'Encountered issue saving fact {fact_data} - {e}'
         self.log.warning(error_msg)
         raise JsonHttpBadRequest(error_msg)
예제 #5
0
 def parse(self, blob):
     for ip in re.findall(r'\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b', blob):
         if self._is_valid_ip(ip):
             yield Fact.load(dict(trait=self.trait, value=ip))
예제 #6
0
 def parse(self, blob):
     for p in re.findall(r'(\/.*?\.[\w:]+[^\s]+)', blob):
         yield Fact.load(dict(trait=self.trait, value=p))
     for p in re.findall(r'(C:\\.*?\.[\w:]+)', blob):
         yield Fact.load(dict(trait=self.trait, value=p))