def _delete_state_object(self, query_context): state_db = ActionExecutionState.get_by_id(query_context.id) if state_db is not None: try: ActionExecutionState.delete(state_db) except: LOG.exception('Failed clearing state object: %s', state_db)
def _delete_state_object(self, query_context): state_db = ActionExecutionState.get_by_id(query_context.id) if state_db is not None: try: ActionExecutionState.delete(state_db) except: LOG.exception('Failed clearing state object: %s', state_db)
def _update_state_models(cls): states = ResultsTrackerTests.states state1 = ActionExecutionState.get_by_id(states['state1.yaml'].id) state1.execution_id = ResultsTrackerTests.liveactions['liveaction1.yaml'].id state2 = ActionExecutionState.get_by_id(states['state2.yaml'].id) state2.execution_id = ResultsTrackerTests.liveactions['liveaction2.yaml'].id ResultsTrackerTests.states['state1.yaml'] = ActionExecutionState.add_or_update(state1) ResultsTrackerTests.states['state2.yaml'] = ActionExecutionState.add_or_update(state2)
def test_state_crud(self): saved = ActionExecutionStateTests._create_save_actionstate() retrieved = ActionExecutionState.get_by_id(saved.id) self.assertDictEqual(saved.query_context, retrieved.query_context) self.assertEqual(saved.query_module, retrieved.query_module) ActionExecutionStateTests._delete(model_objects=[retrieved]) try: retrieved = ActionExecutionState.get_by_id(saved.id) except ValueError: retrieved = None self.assertIsNone(retrieved, 'managed to retrieve after failure.')
def _update_state_models(cls): states = ResultsTrackerTests.states state1 = ActionExecutionState.get_by_id(states['state1.yaml'].id) state1.execution_id = ResultsTrackerTests.liveactions[ 'liveaction1.yaml'].id state2 = ActionExecutionState.get_by_id(states['state2.yaml'].id) state2.execution_id = ResultsTrackerTests.liveactions[ 'liveaction2.yaml'].id ResultsTrackerTests.states[ 'state1.yaml'] = ActionExecutionState.add_or_update(state1) ResultsTrackerTests.states[ 'state2.yaml'] = ActionExecutionState.add_or_update(state2)
def _create_execution_state(self, liveaction_id, runnertype_db, query_context): state_db = ActionExecutionStateDB( execution_id=liveaction_id, query_module=runnertype_db.query_module, query_context=query_context) try: return ActionExecutionState.add_or_update(state_db) except: LOG.exception('Unable to create execution state db for liveaction_id %s.' % liveaction_id) return None
def _create_execution_state(self, liveaction_id, runnertype_db, query_context): state_db = ActionExecutionStateDB( execution_id=liveaction_id, query_module=runnertype_db.query_module, query_context=query_context) try: return ActionExecutionState.add_or_update(state_db) except: LOG.exception('Unable to create execution state db for liveaction_id %s.' % liveaction_id) return None
def test_state_db_creation_async_actions(self): runner_container = get_runner_container() params = {'actionstr': 'foo', 'actionint': 20, 'async_test': True} liveaction_db = self._get_action_exec_db_model( RunnerContainerTest.async_action_db, params) liveaction_db = LiveAction.add_or_update(liveaction_db) executions.create_execution_object(liveaction_db) # Assert that execution ran without exceptions. runner_container.dispatch(liveaction_db) states = ActionExecutionState.get_all() found = None for state in states: if state.execution_id == liveaction_db.id: found = state self.assertTrue(found is not None, 'There should be a state db object.') self.assertTrue(found.query_context is not None) self.assertTrue(found.query_module is not None)
def _bootstrap(self): all_states = ActionExecutionState.get_all() LOG.info('Found %d pending states in db.' % len(all_states)) query_contexts_dict = defaultdict(list) for state_db in all_states: try: context = QueryContext.from_model(state_db) except: LOG.exception('Invalid state object: %s', state_db) continue query_module_name = state_db.query_module querier = self.get_querier(query_module_name) if querier is not None: query_contexts_dict[querier].append(context) for querier, contexts in six.iteritems(query_contexts_dict): LOG.info('Found %d pending actions for query module %s', len(contexts), querier) querier.add_queries(query_contexts=contexts)
def _bootstrap(self): all_states = ActionExecutionState.get_all() LOG.info('Found %d pending states in db.' % len(all_states)) query_contexts_dict = defaultdict(list) for state_db in all_states: try: context = QueryContext.from_model(state_db) except: LOG.exception('Invalid state object: %s', state_db) continue query_module_name = state_db.query_module querier = self.get_querier(query_module_name) if querier is not None: query_contexts_dict[querier].append(context) for querier, contexts in six.iteritems(query_contexts_dict): LOG.info('Found %d pending actions for query module %s', len(contexts), querier) querier.add_queries(query_contexts=contexts)
def test_state_db_creation_async_actions(self): runner_container = get_runner_container() params = { 'actionstr': 'foo', 'actionint': 20, 'async_test': True } liveaction_db = self._get_action_exec_db_model(RunnerContainerTest.async_action_db, params) liveaction_db = LiveAction.add_or_update(liveaction_db) executions.create_execution_object(liveaction_db) # Assert that execution ran without exceptions. runner_container.dispatch(liveaction_db) states = ActionExecutionState.get_all() found = None for state in states: if state.execution_id == liveaction_db.id: found = state self.assertTrue(found is not None, 'There should be a state db object.') self.assertTrue(found.query_context is not None) self.assertTrue(found.query_module is not None)
def _create_save_actionstate(): created = ActionExecutionStateDB() created.query_context = {'id': 'some_external_service_id'} created.query_module = 'dummy.modules.query1' created.execution_id = bson.ObjectId() return ActionExecutionState.add_or_update(created)
def get_state(cls, exec_db): state = ActionExecutionStateDB(execution_id=str(exec_db.id), query_context={'id': 'foo'}, query_module='tests.resources.test_querymodule') return ActionExecutionState.add_or_update(state)
def get_state(cls, exec_db): state = ActionExecutionStateDB( execution_id=str(exec_db.id), query_context={'id': 'foo'}, query_module='tests.resources.test_querymodule') return ActionExecutionState.add_or_update(state)