예제 #1
0
    def test_datastore_token_timeout(self):
        datastore_service = DatastoreService(logger=mock.Mock(),
                                             pack_name='core',
                                             class_name='TestSensor',
                                             api_username='******')

        mock_api_client = mock.Mock()
        kvp1 = KeyValuePair()
        kvp1.name = 'test1'
        kvp1.value = 'bar'
        mock_api_client.keys.get_by_id.return_value = kvp1

        token_expire_time = get_datetime_utc_now() - timedelta(seconds=5)
        datastore_service._client = mock_api_client
        datastore_service._token_expire = token_expire_time

        self._set_mock_api_client(mock_api_client)

        with mock.patch('st2common.services.datastore.Client',
                        return_value=mock_api_client) as datastore_client:
            value = datastore_service.get_value(name='test1', local=False)
            datastore_client.assert_called()
            self.assertEqual(value, kvp1.value)
            self.assertGreater(datastore_service._token_expire,
                               token_expire_time)
예제 #2
0
    def _get_action_instance(self):
        actions_cls = action_loader.register_plugin(Action, self._file_path)
        action_cls = actions_cls[0] if actions_cls and len(
            actions_cls) > 0 else None

        if not action_cls:
            raise Exception(
                'File "%s" has no action or the file doesn\'t exist.' %
                (self._file_path))

        config_parser = ContentPackConfigParser(pack_name=self._pack)
        config = config_parser.get_action_config(
            action_file_path=self._file_path)

        if config:
            LOG.info('Using config "%s" for action "%s"' %
                     (config.file_path, self._file_path))

            action_instance = action_cls(config=config.config)
        else:
            LOG.info('No config found for action "%s"' % (self._file_path))
            action_instance = action_cls(config={})

        # Setup action_instance proeprties
        action_instance.logger = self._set_up_logger(action_cls.__name__)
        action_instance.datastore = DatastoreService(
            logger=action_instance.logger,
            pack_name=self._pack,
            class_name=action_cls.__name__,
            api_username="******")

        return action_instance
예제 #3
0
    def __init__(self, action_wrapper):
        logger = get_logger_for_python_runner_action(action_name=action_wrapper._class_name)

        self._action_wrapper = action_wrapper
        self._datastore_service = DatastoreService(logger=logger,
                                                   pack_name=self._action_wrapper._pack,
                                                   class_name=self._action_wrapper._class_name,
                                                   api_username='******')
예제 #4
0
    def setUp(self):
        super(DatastoreServiceTestCase, self).setUp()

        self._datastore_service = DatastoreService(logger=mock.Mock(),
                                                   pack_name='core',
                                                   class_name='TestSensor',
                                                   api_username='******')
        self._datastore_service._get_api_client = mock.Mock()
예제 #5
0
    def __init__(self, sensor_wrapper):
        self._sensor_wrapper = sensor_wrapper
        self._logger = self._sensor_wrapper._logger
        self._dispatcher = TriggerDispatcher(self._logger)
        self._datastore_service = DatastoreService(logger=self._logger,
                                                   pack_name=self._sensor_wrapper._pack,
                                                   class_name=self._sensor_wrapper._class_name,
                                                   api_username='******')

        self._client = None
예제 #6
0
    def datastore_service(self):
        # Late import to avoid very expensive in-direct import (~1 second) when this function is
        # not called / used
        from st2common.services.datastore import DatastoreService

        if not self._datastore_service:
            action_name = self._action_wrapper._class_name
            logger = get_logger_for_python_runner_action(
                action_name=action_name)
            self._datastore_service = DatastoreService(
                logger=logger,
                pack_name=self._action_wrapper._pack,
                class_name=self._action_wrapper._class_name,
                api_username='******')
        return self._datastore_service